variable values uso operador not multiple con sql sql-server pattern-matching

values - SQL Server LIKE contiene caracteres de corchete



sql server like multiple values (3)

Usando SQL Server 2008. Tengo una tabla con la siguiente columna:

sampleData (nvarchar(max))

El valor de esta columna en algunas de estas filas son listas con el siguiente formato:

["value1","value2","value3"]

Estoy intentando escribir una consulta simple que devolverá todas las filas con listas con este formato, simplemente detectando el corchete de apertura.

SELECT * from sampleTable where sampleData like ''[%''

La consulta anterior no funciona porque ''['' es un carácter especial, y por mi vida no puedo averiguar cómo escapar del corchete para que mi consulta haga lo que quiero.

Gracias por cualquier sugerencia!


Aparte de la respuesta de gbn, el otro método es usar la opción ESCAPE :

SELECT * from sampleTable where sampleData like ''/[%'' ESCAPE ''/'

Consulte la documentación para más detalles.


Solo una nota adicional aquí ... Si desea incluir el corchete (u otros especiales) dentro de un conjunto de caracteres, solo tiene la opción de usar ESCAPE (ya que ya está usando los corchetes para indicar el conjunto). También DEBES especificar la cláusula ESCAPE, ya que no hay un carácter de escape predeterminado (no es una barra invertida por defecto, como pensé al principio, proveniente de un fondo en C).

por ejemplo, si quiero sacar filas donde una columna contiene algo fuera de un conjunto de caracteres "aceptables", por el bien de un argumento, digamos alfanuméricos ... podríamos comenzar con esto

SELECT * FROM MyTest WHERE MyCol LIKE ''%[^a-zA-Z0-9]%''

Por lo tanto, estamos devolviendo cualquier cosa que tenga algún carácter que no esté en la lista (debido al carácter de careta principal ^).

Si luego queremos agregar caracteres especiales en este conjunto de caracteres aceptables, no podemos anidar los corchetes, por lo que debemos usar un carácter de escape, como este ...

SELECT * FROM MyTest WHERE MyCol LIKE ''%[^a-zA-Z0-9/[/]]%'' ESCAPE ''/'

Si precede los corchetes (individualmente) con una barra invertida e indica que estamos usando la barra invertida para el carácter de escape, nos permite escapar de ellos dentro de los corchetes que funcionan, lo que indica el conjunto de caracteres.

Lo siento por el ejemplo tonto, pero espero que ayude a alguien


... like ''[[]%''

Utiliza [ ] para rodear un carácter especial (o rango)

Consulte la sección "Uso de caracteres comodín como literales" en SQL Server LIKE

Editar, 24 Nov 2011

Nota: No necesitas escapar del soporte de cierre ...