Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment gérer les guillemets ' en SQL

Le caractère d'échappement est ', vous devrez donc remplacer le guillemet par deux guillemets.

Par exemple,

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

devient

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

Cela dit, il est probablement incorrect de le faire vous-même. Votre langage peut avoir une fonction pour échapper les chaînes à utiliser dans SQL, mais une option encore meilleure consiste à utiliser des paramètres. Cela fonctionne généralement comme suit.

Votre commande SQL serait :

SELECT * FROM PEOPLE WHERE SURNAME=?

Ensuite, lorsque vous l'exécutez, vous passez "O'Keefe" en paramètre.

Parce que le SQL est analysé avant que la valeur du paramètre ne soit définie, il n'y a aucun moyen pour la valeur du paramètre de modifier la structure du SQL (et c'est même un peu plus rapide si vous voulez exécuter la même instruction plusieurs fois avec des paramètres différents).

Je dois également souligner que, bien que votre exemple ne provoque qu'une erreur, vous vous exposez à de nombreux autres problèmes en n'échappant pas les chaînes de manière appropriée. Voir http://en.wikipedia.org/wiki/SQL_injection pour un bon point de départ ou le classique suivant bande dessinée xkcd .