sql >> Databasteknik >  >> RDS >> Oracle

Hur hanterar jag citattecken ' i SQL

Escape-tecknet är ', så du skulle behöva ersätta citattecken med två citattecken.

Till exempel,

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

blir

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

Som sagt, det är förmodligen felaktigt att göra detta själv. Ditt språk kan ha en funktion för att undvika strängar för användning i SQL, men ett ännu bättre alternativ är att använda parametrar. Vanligtvis fungerar detta enligt följande.

Ditt SQL-kommando skulle vara:

SELECT * FROM PEOPLE WHERE SURNAME=?

Sedan, när du kör det, skickar du in "O'Keefe" som en parameter.

Eftersom SQL tolkas innan parametervärdet ställs in, finns det inget sätt för parametervärdet att ändra strukturen för SQL (och det är till och med lite snabbare om du vill köra samma programsats flera gånger med olika parametrar).

Jag bör också påpeka att, även om ditt exempel bara orsakar ett fel, öppnar du upp dig för många andra problem genom att inte undvika strängar på rätt sätt. Se http://en.wikipedia.org/wiki/SQL_injection för en bra utgångspunkt eller följande klassiska xkcd-serie .



  1. Välja dynamiska värden från HTML-formulär och lagra i PHP-variabler

  2. Oracle:Sätt att aggregera sammanfoga en ogrupperad kolumn i grupperade resultat

  3. Switchover/Switchback i Slony-I medan du uppgraderar PostgreSQL huvudversioner 8.4.x/9.3.x

  4. Skadliga, genomgripande SQL Server-prestandamyter