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

Come gestisco le virgolette ' in SQL

Il carattere di escape è ', quindi dovresti sostituire la virgoletta con due virgolette.

Ad esempio,

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

diventa

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

Detto questo, probabilmente non è corretto farlo da soli. La tua lingua potrebbe avere una funzione per sfuggire alle stringhe da utilizzare in SQL, ma un'opzione ancora migliore consiste nell'usare i parametri. Di solito funziona come segue.

Il tuo comando SQL sarebbe:

SELECT * FROM PEOPLE WHERE SURNAME=?

Quindi, quando lo esegui, passi "O'Keefe" come parametro.

Poiché l'SQL viene analizzato prima che il valore del parametro venga impostato, non c'è modo per il valore del parametro di alterare la struttura dell'SQL (ed è anche un po' più veloce se si desidera eseguire la stessa istruzione più volte con parametri diversi).

Dovrei anche sottolineare che, mentre il tuo esempio causa solo un errore, ti apri a molti altri problemi non evadendo le stringhe in modo appropriato. Vedi http://en.wikipedia.org/wiki/SQL_injection per un buon punto di partenza o il seguente classico xkcd comic .