Apa sintaks SQL yang benar untuk memasukkan nilai dengan tanda kutip di dalamnya?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Saya terus mendapatkan kesalahan karena saya pikir tanda kutip setelah O adalah tag penutup untuk nilai.
sql
sql-update
sql-insert
leora
sumber
sumber
Jawaban:
Escape the apostrophe (yaitu menggandakan karakter tanda kutip tunggal) di SQL Anda:
Hal yang sama berlaku untuk permintaan SELECT:
Apostrof, atau kutipan tunggal, adalah karakter khusus dalam SQL yang menentukan awal dan akhir data string. Ini berarti bahwa untuk menggunakannya sebagai bagian dari data string literal Anda, Anda perlu
escape
karakter khusus. Dengan satu kutipan, ini biasanya dilakukan dengan menggandakan penawaran Anda. (Dua karakter kutipan tunggal, bukan penawaran ganda, bukan penawaran tunggal.)Catatan : Anda hanya perlu khawatir tentang masalah ini ketika Anda mengedit data secara manual melalui antarmuka SQL mentah karena menulis kueri di luar pengembangan dan pengujian harus jarang terjadi. Dalam kode ada teknik dan kerangka kerja (tergantung pada tumpukan Anda) yang mengurus melarikan diri karakter khusus, injeksi SQL , dll.
sumber
Anda hanya perlu menggandakan pada tanda kutip tunggal ...
sumber
Anda harus melarikan diri dari tanda kutip. Dalam T-SQL ini dengan tanda kutip ganda, jadi
insert
pernyataan Anda menjadi:sumber
Values
harus dimasukkan dalam kurung kurawal (yang kemudian membuatnya menjadi jawaban yang sama dengan @JustinNiessner)Karena satu kutipan digunakan untuk menunjukkan awal dan akhir suatu string; Anda harus menghindarinya.
Jawaban singkatnya adalah dengan menggunakan dua tanda kutip tunggal -
''
- agar database SQL menyimpan nilai sebagai'
.Lihat menggunakan REPLACE untuk membersihkan nilai yang masuk:
Anda ingin memeriksa
''''
, dan menggantinya jika ada dalam string dengan''''''
untuk menghindari kutipan tunggal.sumber
Eduffy punya ide bagus . Dia baru saja mendapatkannya mundur dalam contoh kodenya. Baik dalam JavaScript atau dalam SQLite Anda dapat mengganti apostrof dengan simbol aksen.
Dia (secara tidak sengaja saya yakin) menempatkan simbol aksen sebagai pembatas untuk string alih-alih mengganti tanda kutip di O'Brian. Ini sebenarnya solusi yang sangat sederhana untuk kebanyakan kasus.
sumber
Karakter apostrof dapat disisipkan dengan memanggil fungsi CHAR dengan nilai pencarian tabel ASCII apostrof , 39. Nilai string kemudian dapat digabungkan dengan operator gabungan .
sumber
SQL berikut menggambarkan fungsi ini.
Hasil
sumber
gunakan tanda kutip ganda di sekitar nilai.
sumber
He said, "Don't!"
menggunakan tanda kutip tunggal dan / atau tanda kutip ganda - yang dapat dilakukan:'He said, "Don''t!"'
atau"He said, ""Don't!"""
. Saat menambahkan jawaban baru ke pertanyaan lama dengan jawaban yang diterima, Anda harus memberikan informasi baru dan lengkap. Menggunakan tanda kutip ganda adalah hal baru - tetapi terbatas pada beberapa DBMS; Anda harus bersusah payah mengidentifikasi setidaknya satu dari mereka yang menerimanya.Gunakan backtick (pada tombol ~) sebagai gantinya;
sumber