2012-09-04 29 views
48

Pensé que era CONTAINS, pero eso no funciona para mí.¿Cómo puedo saber si una variable VARCHAR contiene una subcadena?

Estoy mirando para hacer esto:

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

tengo que correr un select u otra, dependiendo de si esa variable contiene una cadena y no puedo encontrar la manera de conseguir que funcione. Todos los ejemplos que estoy viendo están usando columnas en el contenido.

Gracias de antemano.

Respuesta

62

La forma estándar SQL es utilizar como:

where @stringVar like '%thisstring%' 

que está en una instrucción de consulta. También puede hacer esto en TSQL:

if @stringVar like '%thisstring%' 
+1

... que me hace triste. Lo intenté el otro día y no funcionó. Debo escribir algo mal porque funcionó. Me estoy refiriendo a hacer algo tarde un viernes antes de un fin de semana de 3 días. Puede que haya escrito la declaración completa al revés por lo que sé. ¡Gracias! – Yatrix

+3

@Yatrix. . . también puedes usar charindex ('thisstring', @stringVar), si parece que no funciona. –

+0

@ Asad. . . Por supuesto, esto funcionará. El comodín '%' coincide con cero o más caracteres. –

6

CONTAINS es para un campo de texto completo indexado - si no, a continuación, utilizar LIKE

22

En lugar de LIKE (que no trabajo como otros comentaristas han sugerido), puede alternativamente, utilizar 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. 
Cuestiones relacionadas