Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie gehe ich mit Anführungszeichen ' in SQL um

Das Escape-Zeichen ist ', also müssten Sie das Anführungszeichen durch zwei Anführungszeichen ersetzen.

Zum Beispiel

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

wird

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

Das heißt, es ist wahrscheinlich falsch, dies selbst zu tun. Ihre Sprache verfügt möglicherweise über eine Funktion zum Escapezeichen für Zeichenfolgen zur Verwendung in SQL, aber eine noch bessere Option ist die Verwendung von Parametern. Normalerweise funktioniert dies wie folgt.

Ihr SQL-Befehl wäre:

SELECT * FROM PEOPLE WHERE SURNAME=?

Wenn Sie es dann ausführen, übergeben Sie "O'Keefe" als Parameter.

Da die SQL geparst wird, bevor der Parameterwert festgelegt wird, gibt es für den Parameterwert keine Möglichkeit, die Struktur der SQL zu ändern (und es ist sogar etwas schneller, wenn Sie dieselbe Anweisung mehrmals mit unterschiedlichen Parametern ausführen möchten).

Ich sollte auch darauf hinweisen, dass, während Ihr Beispiel nur einen Fehler verursacht, Sie sich für viele andere Probleme öffnen, indem Sie Zeichenfolgen nicht angemessen maskieren. Siehe http://en.wikipedia.org/wiki/SQL_injection für einen guten Ausgangspunkt oder den folgenden klassischen xkcd-Comic .