2012-03-01 79 views
0

我想知道如何找到字符串中子字符串的确切位置。更具体地说,字符串包含用逗号分开的单词,我想知道一个单词是否存在。查找字符串中子字符串的确切位置SQL SERVER 2008

比方说,我们有这样的事情:

DECLARE @VisitedWebParts nvarchar(255) 

SET @VisitedWebParts = 'MyNavContacts,MyNavUpcomingMaturities,MyNavActivitySummary,MyNavCompanies,CompanyNavBidHistory,CompanyNav' 

我如何找到让说,如果“CompanyNav”字符串中存在。如果我错了,使用Like或CharIndex可能无助于纠正我,因为如果CompanyNav实际上不存在且CompanyNavBidHis存在,那么也会错误地说CompanyNav会存在。你知道我的意思!

在此先感谢您的意见和建议!

回答

1

关键是要确保您考虑字符串任一侧的逗号。这意味着你需要比较逗号包围的字符串和逗号包围的输入。

IF CHARINDEX(',CompanyNav,', ',' + @VisitedWebParts + ',') > 0 
BEGIN 
    PRINT 'It exists!' 
END 
ELSE 
BEGIN 
    PRINT 'It does not exist!' 
END 
+0

如果CompanyNav碰巧是字符串中的第一个单词,它不会以逗号开头。纠正我,如果我错了。 – SaiBand 2012-03-01 00:23:19

+0

这就是为什么我加了'','+ @string +',''......你试过了吗? – 2012-03-01 00:24:20

+0

@AaronBertrand - 你忘了逃避“它不存在”的单引号 – Bridge 2012-03-01 00:25:20