2012-09-04 108 views
48

我認爲這是CONTAINS,但這不適合我。如何判斷VARCHAR變量是否包含子字符串?

我要做到這一點:

IF CONTAINS(@stringVar, 'thisstring') 
    ... 

我要運行一個select或另一個,這取決於變量是否包含一個字符串,我無法弄清楚如何得到它的工作。我看到的所有示例都使用包含中的列。

在此先感謝。

回答

62

標準SQL的方法是使用這樣的:

where @stringVar like '%thisstring%' 

這是一個查詢語句。你也可以這樣做在TSQL:

if @stringVar like '%thisstring%' 
+1

...這讓我傷心。我有一天嘗試過,但沒有奏效。我必須輸入錯誤的東西,因爲它工作正常。我打算在3天的週末之前在週五晚些時候做點什麼。對於我所知道的,我可能已將整個陳述向後輸入。謝謝! – Yatrix

+3

@Yatrix。 。 。你也可以使用charindex('thisstring',@stringVar),如果這樣似乎不起作用。 –

+0

@Asad。 。 。當然這會起作用。通配符'%'匹配零個或多個字符。 –

6

CONTAINS是全文索引字段 - 如果沒有,則使用LIKE

22

代替LIKE(它的工作與其他評論者所建議的),你可以選擇使用CHARINDEX

declare @full varchar(100) = 'abcdefg' 
declare @find varchar(100) = 'cde' 
if (charindex(@find, @full) > 0) 
    print 'exists' 
5
IF CHARINDEX('TextToSearch',@TextWhereISearch, 0) > 0 => TEXT EXISTS 

    IF PATINDEX('TextToSearch', @TextWhereISearch) > 0 => TEXT EXISTS 

    Additionally we can also use LIKE but I usually don't use LIKE. 
相關問題