Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menangani tanda kutip ' dalam SQL

Karakter escape adalah ', jadi Anda perlu mengganti tanda kutip dengan dua tanda kutip.

Misalnya,

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

menjadi

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

Yang mengatakan, itu mungkin salah untuk melakukan ini sendiri. Bahasa Anda mungkin memiliki fungsi untuk menghindari string untuk digunakan dalam SQL, tetapi opsi yang lebih baik adalah menggunakan parameter. Biasanya ini berfungsi sebagai berikut.

Perintah SQL Anda adalah:

SELECT * FROM PEOPLE WHERE SURNAME=?

Kemudian, ketika Anda menjalankannya, Anda memasukkan "O'Keefe" sebagai parameter.

Karena SQL diurai sebelum nilai parameter ditetapkan, tidak ada cara bagi nilai parameter untuk mengubah struktur SQL (dan bahkan sedikit lebih cepat jika Anda ingin menjalankan pernyataan yang sama beberapa kali dengan parameter yang berbeda).

Saya juga harus menunjukkan bahwa, sementara contoh Anda hanya menyebabkan kesalahan, Anda membuka diri terhadap banyak masalah lain dengan tidak keluar dari string dengan tepat. Lihat http://en.wikipedia.org/wiki/SQL_injection untuk titik awal yang baik atau komik xkcd klasik berikut .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengembalikan ketika terjadi kesalahan saat menjalankan perintah sql loader?

  2. Oracle ODP.net Managed vs Unmanaged Driver

  3. Perbarui beberapa baris menggunakan CASE WHEN - ORACLE

  4. Kecualikan item menurut catatan

  5. Menggunakan DateDiff() di Oracle