2012-01-06 36 views
7

¿Hay alguna manera fácil en Oracle para escapar caracteres especiales en una instrucción SQL? (es decir,%, &, ') Vi este link con respecto a los caracteres de escapado manual, pero pensé que Oracle podría haber proporcionado una manera más fácil de hacerlo.Escapar caracteres especiales en SQL

Nota: Estoy generando sentencias de selección de SQL dinámico a través de un ORM.

+0

La única cosa que necesita "escapar" es la comilla simple dentro de un carácter literal. Ninguno de los otros que mencionas son "personajes especiales" que necesitan escapar. –

+1

@a_horse_with_no_name En realidad, el porcentaje y el guión bajo son caracteres especiales cuando se utiliza la cláusula WHERE .. LIKE. – RuntimeException

Respuesta

16

Si utiliza variables se unen y ORM, citas y símbolos de unión individuales empotrados debe ser entregado de forma automática; esos son caracteres especiales en SQL * Plus o SQL * Developer.

Para usar como dónde buscar el literal caracteres% y _ (no sus versiones multi e comodín de un solo carácter), tendrá que utilizar la cláusula escape de la condición like:

select * from my_table where some_text like '/%%' escape '/'; 

sólo se devuelve las filas donde algún_texto comienza con un signo de porcentaje.

2

Parece que está buscando algo así como el comando SET DEFINE OFF, que puede ejecutar y afecta a toda la sesión de SQL. Este comando, sin embargo, solo evita que Oracle le dé un significado especial al carácter de ampersand. No afecta a otros caracteres especiales, como la comilla simple.

Un par de enlaces a información adicional con respecto a los personajes que escapan sigue:

https://forums.oracle.com/forums/thread.jspa?threadID=2256637

http://docs.oracle.com/cd/B10501_01/text.920/a96518/cqspcl.htm

+1

El signo & es reconocido por el cliente SQL * Plus. No es un personaje especial para el servidor de base de datos real. –

Cuestiones relacionadas