sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo trato con las comillas en SQL?

El carácter de escape es ', por lo que deberá reemplazar la comilla con dos comillas.

Por ejemplo,

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

se convierte

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

Dicho esto, probablemente sea incorrecto hacerlo usted mismo. Su idioma puede tener una función para escapar cadenas para usar en SQL, pero una opción aún mejor es usar parámetros. Por lo general, esto funciona de la siguiente manera.

Su comando SQL sería:

SELECT * FROM PEOPLE WHERE SURNAME=?

Luego, cuando lo ejecuta, pasa "O'Keefe" como parámetro.

Debido a que el SQL se analiza antes de que se establezca el valor del parámetro, no hay forma de que el valor del parámetro altere la estructura del SQL (e incluso es un poco más rápido si desea ejecutar la misma declaración varias veces con diferentes parámetros).

También debo señalar que, si bien su ejemplo solo causa un error, se expone a muchos otros problemas al no escapar de las cadenas de forma adecuada. Consulte http://en.wikipedia.org/wiki/SQL_injection para un buen punto de partida o el siguiente clásico xkcd comic .