sql >> Database teknologi >  >> RDS >> Oracle

Hvordan håndterer jeg anførselstegn ' i SQL

Escape-tegnet er ', så du skal erstatte citatet med to anførselstegn.

For eksempel,

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

bliver til

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

Når det er sagt, er det sandsynligvis forkert at gøre dette selv. Dit sprog kan have en funktion til at undslippe strenge til brug i SQL, men en endnu bedre mulighed er at bruge parametre. Normalt fungerer dette som følger.

Din SQL-kommando ville være:

SELECT * FROM PEOPLE WHERE SURNAME=?

Så, når du udfører det, sender du "O'Keefe" ind som en parameter.

Fordi SQL'en parses før parameterværdien er indstillet, er der ingen måde for parameterværdien at ændre strukturen af ​​SQL'en (og det er endda lidt hurtigere, hvis du vil køre den samme sætning flere gange med forskellige parametre).

Jeg skal også påpege, at mens dit eksempel blot forårsager en fejl, åbner du dig selv op for en masse andre problemer ved ikke at undslippe strenge korrekt. Se http://en.wikipedia.org/wiki/SQL_injection for et godt udgangspunkt eller følgende klassiske xkcd-tegneserie .



  1. System.Data.SqlClient Namespace til MySQL?

  2. Oracle 11g Bind-variabel eksisterer ikke

  3. 5 Databaseovervågningsvaner for succesrige DBA'er

  4. AWS-lim - Afkort destinationspostgres-tabel før indsættelse