Saya mencoba insert
beberapa data teks ke dalam tabel di SQL Server
9.
Teks ini menyertakan kutipan tunggal (').
Bagaimana saya bisa lolos dari itu?
Saya mencoba menggunakan dua tanda kutip tunggal, tetapi itu memberi saya beberapa kesalahan.
misalnya. insert into my_table values('hi, my name''s tim.');
sql
sql-server
tsql
delimiter
single-quotes
tim_wonil
sumber
sumber
Jawaban:
Kutipan tunggal lolos dengan menggandakannya , sama seperti Anda telah menunjukkan kepada kami dalam contoh Anda. SQL berikut menggambarkan fungsi ini. Saya mengujinya di SQL Server 2008:
Hasil
sumber
Jika lolos dari penawaran tunggal Anda dengan penawaran tunggal lainnya tidak berfungsi untuk Anda (seperti tidak untuk salah satu
REPLACE()
permintaan saya baru-baru ini ), Anda dapat menggunakanSET QUOTED_IDENTIFIER OFF
sebelum permintaan Anda, kemudianSET QUOTED_IDENTIFIER ON
setelah permintaan Anda.Sebagai contoh
sumber
Bagaimana tentang:
sumber
Penggandaan kutipan seharusnya berhasil, jadi aneh bahwa itu tidak bekerja untuk Anda; Namun, sebuah alternatif menggunakan karakter kutipan ganda, alih-alih yang tunggal, di sekitar string. Yaitu,
insert into my_table values("hi, my name's tim."
);sumber
2 cara untuk mengatasi ini:
untuk
'
Anda cukup dengan menggandakannya dalam string, misalnyaselect 'I''m happpy'
- akan mendapatkan:I'm happy
Untuk charactor apa pun Anda tidak yakin: di sql server Anda bisa mendapatkan unicode char apa pun dengan
select unicode(':')
(Anda menyimpan nomornya)Jadi hal ini bisa juga Anda lakukan
select 'I'+nchar(39)+'m happpy'
sumber
Juga hal lain yang harus diperhatikan adalah apakah benar-benar disimpan sebagai ASCII klasik '(ASCII 27) atau Unicode 2019 (yang terlihat mirip, tetapi tidak sama).
Ini bukan masalah besar pada sisipan, tetapi ini bisa berarti dunia dalam memilih dan memperbarui.
Jika itu adalah nilai unicode maka keluar dari 'dalam klausa WHERE (misalnya di mana bla =' Kompor Pekerja ') akan kembali seperti nilai yang Anda cari tidak ada jika' dalam "Kompor Pekerja" sebenarnya adalah nilai unicode.
Jika aplikasi klien Anda mendukung kunci bebas, serta input berbasis salin dan rekat, itu bisa berupa Unicode di beberapa baris, dan ASCII di baris lain!
Cara sederhana untuk mengonfirmasi ini adalah dengan melakukan semacam permintaan terbuka yang akan mengembalikan nilai yang Anda cari, lalu menyalin dan menempelkannya ke notepad ++ atau editor pendukung unicode lainnya.
Penampilan yang berbeda antara nilai ascii dan unicode harus jelas bagi mata, tetapi jika Anda condong ke arah anal, itu akan muncul sebagai 27 (ascii) atau 92 (unicode) dalam hex editor.
sumber
Banyak dari kita tahu bahwa Metode Populer untuk Melewati Kutipan Tunggal adalah dengan menggandakannya dengan mudah seperti di bawah ini.
kita akan melihat beberapa cara alternatif lain untuk lolos dari tanda kutip tunggal.
1.UNICODE Karakter
39 adalah karakter UNICODE dari Kutipan Tunggal. Jadi kita bisa menggunakannya seperti di bawah ini.
2.QUOTED_IDENTIFIER
Solusi alternatif sederhana dan terbaik lainnya adalah dengan menggunakan QUOTED_IDENTIFIER. Ketika QUOTED_IDENTIFIER diatur ke OFF, string dapat dilampirkan dalam tanda kutip ganda. Dalam skenario ini, kita tidak perlu keluar dari tanda kutip tunggal. Jadi, cara ini akan sangat membantu saat menggunakan banyak nilai string dengan tanda kutip tunggal. Ini akan sangat membantu saat menggunakan begitu banyak baris skrip INSERT / UPDATE di mana nilai kolom memiliki tanda kutip tunggal.
KESIMPULAN
Metode yang disebutkan di atas berlaku untuk AZURE dan On Premises.
sumber
Sintaks berikut akan lolos Anda HANYA SATU tanda kutip:
Hasilnya akan menjadi kutipan tunggal. Mungkin sangat membantu untuk membuat SQL dinamis :).
sumber
Ini seharusnya bekerja
sumber
Cukup masukkan 'sebelum memasukkan apa pun. Ini akan seperti karakter pelarian di sqlServer
Contoh: Ketika Anda memiliki bidang sebagai, saya baik-baik saja . Anda dapat melakukannya: MEMPERBARUI my_table SET row = 'Saya baik-baik saja.';
sumber
Ini harus bekerja: gunakan garis miring dan beri penawaran ganda
sumber
PRINT \"hi, my name's tim.\";
akan bekerja di SSMS? Itu tidak bekerja sama sekali dan tidak ada yang pernah mengatakan itu bekerja