2015-02-09 87 views
0

我需要在Tsql中找到特定的字符串模式。我希望第一部分是精确匹配,第二部分是除特定字符以外的任何部分。问题是我希望允许字符串以该字符结尾。例如,我要一个查询,将返回所有的URL相匹配的TSql字符串搜索模仿部分字符串确切和部分不

www.test/%any thing but a '/'%/ 

所以这将返回

www.test/group/ 

,这不会

www.test/group/input/ 

我宁愿这是一个简单的声明就可以使参数更容易添加。

+0

你为什么要呢?你试图解决什么是真正的问题?这听起来像你有一个页面的层次结构,只希望在某一级别的分支,但不是叶子。这是'hierarchyid'的工作,而不是字符串匹配 – 2015-02-09 15:42:36

回答

1

你不能在单一LIKELIKE不是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/ 
0

这个工作对我来说,但我喜欢的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;