Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como faço para lidar com aspas ' no SQL


O caractere de escape é ', portanto, você precisaria substituir a citação por duas aspas.

Por exemplo,

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

torna-se

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

Dito isto, provavelmente é incorreto fazer isso sozinho. Sua linguagem pode ter uma função para escapar de strings para uso em SQL, mas uma opção ainda melhor é usar parâmetros. Normalmente isso funciona da seguinte forma.

Seu comando SQL seria:

SELECT * FROM PEOPLE WHERE SURNAME=?

Então, ao executá-lo, você passa "O'Keefe" como parâmetro.

Como o SQL é analisado antes que o valor do parâmetro seja definido, não há como o valor do parâmetro alterar a estrutura do SQL (e é ainda um pouco mais rápido se você quiser executar a mesma instrução várias vezes com parâmetros diferentes).

Também devo salientar que, embora seu exemplo apenas cause um erro, você se abre para muitos outros problemas por não escapar de strings adequadamente. Consulte http://en.wikipedia.org/wiki/SQL_injection para um bom ponto de partida ou o seguinte clássico xkcd comic .