it-swarm.asia

N awalan sebelum string dalam kueri Transact-SQL

Bisakah Anda memberi tahu saya, kapan saya harus menggunakan awalan N sebelum string dalam permintaan Transact-SQL? Saya sudah mulai bekerja dengan database di mana saya tidak mendapatkan hasil menggunakan kueri seperti ini

SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%'

sampai saya mengubah pola menjadi N'%а_pattern%'. Saya tidak pernah menambahkan awalan ini di masa lalu, jadi saya ingin tahu. a_field Didefinisikan sebagai nvarchar(255), tapi saya pikir alasannya adalah sesuatu yang lain.

41

Artikel-artikel berikut memiliki beberapa informasi yang baik tentang pertanyaan itu. Jawaban singkatnya adalah hanya ada jenis ketidakcocokan antara kolom unicode dan string non-unicode literal yang Anda gunakan. Dari artikel KB, sepertinya menghilangkan awalan N mungkin masih berfungsi dalam beberapa kasus, tetapi itu akan tergantung pada halaman kode dan pengaturan kumpulan database. Itu mungkin menjelaskan perubahan perilaku, jika Anda sebelumnya sukses dengan metode no-prefix.

https://support.Microsoft.com/en-us/kb/2395

31
Charlie

Ini menunjukkan bahwa string selanjutnya dalam Unicode (N sebenarnya adalah singkatan dari set karakter bahasa Nasional). Yang berarti Anda melewati nilai NCHAR, NVARCHAR atau NTEXT, sebagai lawan dari CHAR, VARCHAR, atau TEXT. Lihat artikel # 2354 untuk perbandingan tipe data ini.

Unicode biasanya digunakan dalam aplikasi basis data yang dirancang untuk memfasilitasi halaman kode yang melampaui halaman kode Inggris dan Eropa Barat misalnya Cina. Unicode dirancang sehingga set karakter yang diperluas masih bisa "masuk" ke dalam kolom basis data.

6
Gopu Krishnan

Saya pikir awalan-N memberitahu sql server untuk memperlakukan string sebagai nilai unicode. kolom nvarchar adalah unicode sehingga Anda harus menggunakan sintaks ini ketika mengakses kolom ini.

3
Rune Grimstad