2012-09-04 17 views
48

Myślałem, że to było CONTAINS, ale to nie działa dla mnie.Jak sprawdzić, czy zmienna VARCHAR zawiera podłańcuch?

Czekam na to zrobić:

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

muszę uruchomić jeden select czy inny sposób, w zależności od tego, czy zmienna zawiera ciąg i nie mogę dowiedzieć się, jak zmusić go do pracy. Wszystkie przykłady, które widzę, używają kolumn w zbiorach.

Z góry dziękuję.

Odpowiedz

62

Standard SQL sposobem jest użycie jak:

where @stringVar like '%thisstring%' 

który jest w instrukcji zapytania. Można również zrobić to w TSQL:

if @stringVar like '%thisstring%' 
+1

... to mnie smuci. Próbowałem tego drugiego dnia i nie zadziałało. Musiałem napisać coś źle, ponieważ zadziałało. Piszę to do robienia czegoś późno w piątek przed 3-dniowy weekend. Możliwe, że wypisałem całe oświadczenie w tył za wszystko, co wiem. Dzięki! – Yatrix

+3

@ Patriotic. . . możesz także użyć charindex ("tostring", @stringVar), jeśli coś podobnego nie działa. –

+0

@Asad. . . Oczywiście to zadziała. Symbol wieloznaczny "%" dopasowuje zero lub więcej znaków. –

6

CONTAINS jest pełny tekst indeksowane pola - jeśli nie, to użyj LIKE

22

zamiast LIKE (który działa jak innych komentujących są sugerowane), można alternatywnie użyć 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. 
Powiązane problemy