2012-09-04 16 views
48

Pensavo fosse CONTAINS, ma non funziona per me.Come posso sapere se una variabile VARCHAR contiene una sottostringa?

che sto cercando di fare questo:

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

devo eseguire uno select o in un altro, a seconda che tale variabile contiene una stringa e non riesco a capire come farlo funzionare. Tutti gli esempi che sto vedendo utilizzano le colonne nei contenuti.

Grazie in anticipo.

risposta

62

Il modo standard SQL è quello di utilizzare come:

where @stringVar like '%thisstring%' 

Cioè in un comunicato query. È anche possibile fare questo in TSQL:

if @stringVar like '%thisstring%' 
+1

... questo mi rende triste. L'ho provato l'altro giorno e non ha funzionato. Ho dovuto battere qualcosa di sbagliato perché ha funzionato. Sto cercando di fare qualcosa in ritardo il venerdì prima di un weekend di tre giorni. Potrei aver battuto a macchina l'intera dichiarazione per tutto quello che so. Grazie! – Yatrix

+3

@ Yatrix. . . puoi anche usare charindex ('thisstring', @stringVar), se il simile non sembra funzionare. –

+0

@Asad. . . Certo che funzionerà. Il carattere jolly '%' corrisponde a zero o più caratteri. –

6

CONTAINS è per un campo di testo completo indicizzati - se non, quindi utilizzare LIKE

22

Invece di LIKE (che fa il lavoro come altri commentatori hanno suggerito), è possibile in alternativa utilizzare 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. 
Problemi correlati