T Sql 字符串搜索,匹配字符串的一部分,部分不匹配
TSql string search that mathes part of the string exact and part not
我需要在 Tsql 中找到特定的字符串模式。我希望第一部分完全匹配,第二部分是特定字符以外的任何内容。问题是我希望允许字符串以该字符结尾。例如,我想要一个将 return 所有 url 匹配
的查询
www.test/%any thing but a '/'%/
所以这将是 returned
www.test/group/
这不会
www.test/group/input/
我希望将它放在一个 like 语句中,这样可以更轻松地添加参数。
单人无法做到LIKE
。 LIKE
不是 REGEX
并且是有限的。
有 2 LIKE
s:
DECLARE @t TABLE (href NVARCHAR(200))
INSERT INTO @t VALUES('www.test/any thing but/asdsa/')
INSERT INTO @t VALUES('www.test/any thing but/')
SELECT * FROM @t WHERE href LIKE N'www.test/%/' AND href NOT LIKE N'www.test/%/%/'
输出:
href
www.test/any thing but/
这对我有用,但我更喜欢 Giorgi 的答案 +1
SELECT T.url
FROM ( values ('www.test/group/'), ('www.test/group/input/'), ('www.test/people/')
) as T(url)
WHERE T.url like 'www.test/%/'
AND CHARINDEX ( '/' , T.url, CHARINDEX ( '/' , T.url, ( CHARINDEX ( '/' , T.url ) + 1 ) ) + 1 ) <= 0;
我需要在 Tsql 中找到特定的字符串模式。我希望第一部分完全匹配,第二部分是特定字符以外的任何内容。问题是我希望允许字符串以该字符结尾。例如,我想要一个将 return 所有 url 匹配
的查询www.test/%any thing but a '/'%/
所以这将是 returned
www.test/group/
这不会
www.test/group/input/
我希望将它放在一个 like 语句中,这样可以更轻松地添加参数。
单人无法做到LIKE
。 LIKE
不是 REGEX
并且是有限的。
有 2 LIKE
s:
DECLARE @t TABLE (href NVARCHAR(200))
INSERT INTO @t VALUES('www.test/any thing but/asdsa/')
INSERT INTO @t VALUES('www.test/any thing but/')
SELECT * FROM @t WHERE href LIKE N'www.test/%/' AND href NOT LIKE N'www.test/%/%/'
输出:
href
www.test/any thing but/
这对我有用,但我更喜欢 Giorgi 的答案 +1
SELECT T.url
FROM ( values ('www.test/group/'), ('www.test/group/input/'), ('www.test/people/')
) as T(url)
WHERE T.url like 'www.test/%/'
AND CHARINDEX ( '/' , T.url, CHARINDEX ( '/' , T.url, ( CHARINDEX ( '/' , T.url ) + 1 ) ) + 1 ) <= 0;