sql >> Database >  >> RDS >> Oracle

Hoe ga ik om met aanhalingstekens' in SQL

Het escape-teken is ', dus u moet de aanhalingstekens vervangen door twee aanhalingstekens.

Bijvoorbeeld,

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

wordt

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

Dat gezegd hebbende, is het waarschijnlijk onjuist om dit zelf te doen. Uw taal kan een functie hebben om strings te escapen voor gebruik in SQL, maar een nog betere optie is om parameters te gebruiken. Meestal werkt dit als volgt.

Uw SQL-opdracht zou zijn:

SELECT * FROM PEOPLE WHERE SURNAME=?

Als je het dan uitvoert, geef je "O'Keefe" door als parameter.

Omdat de SQL wordt geparseerd voordat de parameterwaarde is ingesteld, kan de parameterwaarde de structuur van de SQL niet wijzigen (en het is zelfs een beetje sneller als u dezelfde instructie meerdere keren met verschillende parameters wilt uitvoeren).

Ik moet er ook op wijzen dat, hoewel je voorbeeld alleen maar een fout veroorzaakt, je jezelf blootstelt aan een heleboel andere problemen door strings niet op de juiste manier te ontwijken. Zie http://en.wikipedia.org/wiki/SQL_injection voor een goed startpunt of de volgende klassieker xkcd-strip .



  1. Hoe krijg ik een leeftijd uit een D.O.B-veld in MySQL?

  2. Vagrant port forwarding voor Mysql

  3. verwijder informatie uit de mysql-tabel wanneer de gebruiker zijn browser sluit

  4. Basisprincipes van SQL Server ALTER TABLE-instructie