2012-05-07 29 views
17

Estaba buscando una lista de caracteres especiales que se deben escapar en ms sql server pero no pude encontrar una y la mayoría de las respuestas que vi para las preguntas similares aconsejadas para usar consultas parametrizadas .. que Ya lo estoy haciendo, pero el marco que estoy usando no escapa para nada.Caracteres que se deben escapar en Tsql

Así que pensé voy a dar un montón de los probarlo y ver qué falla una .... y yo probamos una simple consulta

select * from x where value = '<characters>' 

en dicha consulta Probé casi todos los personajes que pude encontrar en mi teclado y todos parecen funcionar ... además de la Cita de Singe ... ese falla.

Por lo tanto quiero saber la lista de caracteres que no son válidos y deben ser escaparon en MS SQL Server - tsql y no quieren correr el riesgo de simplemente escapar de la comilla simple y dejar el resto que podrían causar problemas

Apreciar su ayuda

+2

¿Huh? ¿Qué pasa con las consultas parametrizadas? – SLaks

+0

se comportan de manera diferente en diferentes marcos ... no funciona para mí –

+5

Entonces deberías resolver ese problema. – SLaks

Respuesta

30

El único carácter que necesita escaparse en una cadena es una comilla simple (que se realiza con dos comillas simples juntas). De lo contrario, es una cadena y t-sql no le molestará más.

Si estás usando una instrucción LIKE, ver este tema SO Escape a string in SQL Server so that it is safe to use in LIKE expression

Como acotación al margen, cualquier marco que no me deja utilizar parámetros, que no escapa correctamente las cosas para mí, es un disco detener. Intentar desinfectar la entrada de cadena manualmente es como confiar en el método de extracción; eventualmente te atrapará.

+0

¡Gracias HackedByChinese, esa fue la única confirmación que estaba buscando! –

+1

La primera vez que he visto una consulta manual escapando se comparó con la extracción ... jaja. – Corbin

+0

¡Gracias a Apache Cayenne por esto! –

0

No estoy seguro de si es exacto.

% y . y otros comodines según la consulta, también pueden necesitar escaparse. donde busca un punto. Esto fallará

select * from xxxx where field like '%.%' 
+1

Por favor, no destroces tu respuesta. Si crees que es incorrecto y quieres eliminarlo, haz clic en el enlace "Eliminar" debajo de tu publicación. – Tunaki

0

Solo quería decir que _ (guión bajo) también debe ser escapado.

seleccionar * de los productos donde SomeColumn como 'FD [_]%'

Por cierto, no hay nada de malo en consultas con parámetros, pero a veces se quiere ir a la consola de administración de SQL y rápidamente ejecutar una consulta para encontrar algo fuera.

Cuestiones relacionadas