Dalam dokumentasi tentang operator LIKE , tidak ada yang diberitahukan tentang sensitivitas huruf. Apakah itu? Bagaimana cara mengaktifkan / menonaktifkannya?
Saya menanyakan varchar(n)
kolom, pada penginstalan Microsoft SQL Server 2005, jika itu penting.
sql
sql-server-2005
varchar
sql-like
Marcel
sumber
sumber
LIKE
peka huruf besar / kecil, jika tidak, makaLIKE
tidakJawaban:
Bukan operator yang peka huruf besar kecil, melainkan kolom itu sendiri.
Ketika penginstalan SQL Server dilakukan pemeriksaan default dipilih untuk contoh. Kecuali secara eksplisit disebutkan sebaliknya (periksa klausa penyusunan di bawah) saat database baru dibuat, database tersebut mewarisi pemeriksaan dari instance dan saat kolom baru dibuat, ia mewarisi pemeriksaan dari database yang dimilikinya.
Kumpulan seperti
sql_latin1_general_cp1_ci_as
menentukan bagaimana konten kolom harus diperlakukan. CI adalah singkatan dari case insensitive dan AS adalah singkatan dari accent sensitive.Daftar lengkap collation tersedia di https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx
(a) Untuk memeriksa pemeriksaan instance
(b) Untuk memeriksa pemeriksaan database
(c) Untuk membuat database menggunakan pemeriksaan yang berbeda
(d) Untuk membuat kolom menggunakan susunan yang berbeda
(e) Untuk mengubah susunan kolom
Dimungkinkan untuk mengubah contoh dan kumpulan database tetapi itu tidak mempengaruhi objek yang dibuat sebelumnya.
Dimungkinkan juga untuk mengubah susunan kolom dengan cepat untuk perbandingan string, tetapi ini sangat tidak disarankan dalam lingkungan produksi karena sangat mahal.
sumber
[A-Z]
selalu tidak peka huruf besar / kecil.[ABCDEFGHIJKLMNOPQRSŠTUVWXYZŽÅÄÖ]
Namun tampaknya mematuhi pemeriksaan.select COLLATION_NAME, iif(cast(COLLATIONPROPERTY(COLLATION_NAME, 'ComparisonStyle') as int) & 1 = 0, 'case sensitive', 'case insensitive') from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'exampletable' and COLUMN_NAME = 'examplecolumn'
Semua pembicaraan tentang pemeriksaan ini tampaknya agak terlalu rumit. Mengapa tidak menggunakan sesuatu seperti:
Maka cek Anda tidak peka huruf besar / kecil apa pun pemeriksaannya
sumber
like 'a%'
dapat menggunakan indeks danupper
versinya tidak bisa.like
operator peka huruf besar kecil atau tidak .Latin1_General_CI_AS
, maka melakukanUPPER(@@VALUE) NOT LIKE '%SOMETHING%'
atau@@COLUMN NOT LIKE '%SOMETHING%'
tidak relevan: hasilnya akan sama.Anda memiliki opsi untuk menentukan urutan pemeriksaan pada saat menentukan tabel Anda. Jika Anda menetapkan urutan peka huruf besar / kecil,
LIKE
operator Anda akan berperilaku peka huruf besar / kecil; jika Anda menentukan urutan pemeriksaan tidak peka huruf besar kecil,LIKE
operator juga akan mengabaikan huruf besar dan kecil:Berikut adalah demo singkat di sqlfiddle yang menunjukkan hasil susunan urutan pada pencarian dengan
LIKE
.sumber
Jika Anda ingin mencapai pencarian yang peka huruf besar kecil tanpa mengubah susunan kolom / database / server, Anda selalu dapat menggunakan
COLLATE
klausa, misalnyaBekerja dengan cara lain, juga, jika kolom / database / server Anda case sensitive dan Anda tidak ingin pencarian case sensitive, mis
sumber
WHERE bar COLLATE Latin1_General_CS_AS LIKE '[j-k]%'
akan mengembalikanJohn
seperti pada collation capitalJ
ini antara huruf kecilj
dan huruf kecilk
. Ini sepertiaAbBcC...jJkKlLmM...
yang tidak jelas. TampaknyaLatin1_General_BIN
lebih dapat diprediksi dengan pencarian jangkauan dengan operator LIKE.The
like
Operator mengambil dua string. String ini harus memiliki collation yang kompatibel, yang dijelaskan di sini .Menurut pendapat saya, hal-hal menjadi rumit. Kueri berikut mengembalikan kesalahan yang mengatakan bahwa pemeriksaan tidak kompatibel:
Di mesin acak di sini, pemeriksaan default adalah
SQL_Latin1_General_CP1_CI_AS
. Kueri berikut berhasil, tetapi tidak mengembalikan baris:Nilai "abc" dan "ABC" tidak cocok di dunia yang peka huruf besar / kecil.
Dengan kata lain, ada perbedaan antara tidak memiliki pemeriksaan dan menggunakan pemeriksaan default. Jika satu sisi tidak memiliki pemeriksaan, maka pemeriksaan "ditetapkan" secara eksplisit dari sisi lain.
(Hasilnya sama saat pemeriksaan eksplisit ada di sebelah kiri.)
sumber
Coba lari,
Kemudian cari tahu apakah pemeriksaan Anda peka huruf besar / kecil atau tidak.
sumber
Anda dapat mengubah dari properti setiap item.
sumber
Anda dapat dengan mudah mengubah pemeriksaan di studio Microsoft SQL Server Management.
sumber