SQL - BUSQUEDA CON LIKE

   
Vista:

BUSQUEDA CON LIKE

Publicado por Diego (3 intervenciones) el 26/08/2010 20:37:51
Hola a todos
tengo la siguiente consulta

declare @CrName varchar(100) = 'ASDOSP'

if (select @CrName) like '%_OSP%'
begin
print 'ERROR'
end

llega por error cuando ejecuto la consulta

se entiende? la variable esta cargada con el valor 'ASDOSP' y el like busca por '%_OSP%' y el valor es verdadero.

Es como si no estuviera incoorporando el guion bajo al like.

Alguien sabe como hacer para que quede incluido el guion bajo en el like?

Ademas probe poniendo una N adelante del like pero tmapoco funciono (like N'%_OSP%')
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:BUSQUEDA CON LIKE

Publicado por roger (93 intervenciones) el 26/08/2010 23:14:39
el _ indica que en ese lugar puede haber cualquier letra, por lo tanto el patron se cumple
y segun lo que tienes en el codigo se muestra la palabrar error. Cual es el resultado que deseas?

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BUSQUEDA CON LIKE

Publicado por Leonardo Josué (878 intervenciones) el 26/08/2010 23:30:51
Hola Diego, te comento que el guión bajo utilizado en la función like se utiliza para especificar posiciones

declare @CrName varchar(100)
set @CrName = 'ABCA'
if (select @CrName) like '___A'
begin
print 'ERROR 1'
end
set @CrName = 'ABCB'
if (select @CrName) like '___A'
begin
print 'ERROR 2'
end

Con estos dos ejemplos creo que queda claro, en la función like coloqué tres guiones bajos, por lo que la condición sería algo así como "aquellas cadenas que tengan una letra A en la cuarta posición, sin importar qué contengan las tres primeras posiciones". en este caso sólo se imprimiría ERROR 1.

Ahora bien, creo que lo que quieres hacer es que te imprima un error si la cadena termina con _OSP correcto? intenta con esto,

declare @CrName varchar(100)
set @CrName = 'ASDOSP'
if (select @CrName) like '%[_]OSP%'
begin
print 'ERROR 1'
end
set @CrName = 'ASD_OSP'
if (select @CrName) like '%[_]OSP%'
begin
print 'ERROR 2'
end

En este caso sólo se imprimirá el ERROR 2, ya que la cadena sí termina con _OSP.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar