Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak radzić sobie z cudzysłowami ' w SQL?

Znak zmiany znaczenia to ', więc musisz zastąpić cytat dwoma cudzysłowami.

Na przykład

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

staje się

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

To powiedziawszy, prawdopodobnie niewłaściwe jest robienie tego samemu. Twój język może mieć funkcję ucieczki ciągów do użycia w SQL, ale jeszcze lepszą opcją jest użycie parametrów. Zwykle działa to w następujący sposób.

Twoje polecenie SQL będzie wyglądało tak:

SELECT * FROM PEOPLE WHERE SURNAME=?

Następnie, po wykonaniu, przekazujesz "O'Keefe" jako parametr.

Ponieważ SQL jest analizowany przed ustawieniem wartości parametru, nie ma możliwości, aby wartość parametru zmieniła strukturę SQL (a jest to nawet trochę szybsze, jeśli chcesz kilkakrotnie uruchomić tę samą instrukcję z różnymi parametrami).

Powinienem również zwrócić uwagę, że chociaż twój przykład po prostu powoduje błąd, otwierasz się na wiele innych problemów, nie zmieniając odpowiednio ciągów znaków. Zobacz http://en.wikipedia.org/wiki/SQL_injection jako dobry punkt wyjścia lub następujący klasyczny komiks xkcd .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skopiować dane z Excela do Oracle?

  2. Jak wygenerować Dynamic Order by klauzula w procedurze PL/SQL?

  3. Oracle:Jak liczyć wiersze o wartości NULL i NULL?

  4. PRZYPADEK vs. DEKODOWANIE

  5. Procedura PL/SQL została pomyślnie zakończona, ale nic nie pokazuje