Vendor saya mengharuskan database data warehouse menjadi case-sensitive, tetapi saya perlu melakukan query case-insensitive terhadapnya.
Dalam database case-sensitive, bagaimana Anda menulis ini menjadi case-sensitive?
Where Name like '%hospitalist%'
sql-server
collation
like
James
sumber
sumber
select
waktu. Anda dapat melakukan ini dengan membuat kolom baru dengan subset dari data yang ditransformasi dan kemudian mengindeksnya, biasanya pada saat-saat ketika Anda akan menjalankan ETL. Ini akan memiliki biaya pemeliharaan dan bukan metode yang bagus. B) Anda dapat membuat pencarian kueri diperdebatkan, atau dapat dikalahkan. Mengubah kueri menjadiSELECT * FROM TABLE WHERE VALUE LIKE %hospitalist
atauSELECT * FROM TABLE WHERE VALUE LIKE hospitalist%
akan berfungsi. Terlepas dari itu, Anda mencari perangkat keras atau fitur untuk meningkatkan kecepatan pada desain yang buruk.Meskipun Anda dapat menggunakan fungsi skalar seperti UPPER atau RENDAH dan Anda dapat menyusun ulang kolom sehingga tidak lagi peka huruf besar-kecil, semua pendekatan ini mengharuskan konversi data dilakukan terhadap data dasar yang tidak akan pernah memungkinkan untuk pencarian indeks. Anda juga memimpin LIKE Anda dengan wildcard, jadi ini bukan masalah bagi Anda dalam skenario ini, tetapi jika Anda pernah ingin mencari bagian kiri dari string dengan cara yang efisien DAN memungkinkan pengoptimal untuk mencari melalui indeks, Anda dapat menentukan string Anda dengan tanda kurung ([]) sebagai berikut:
Contoh ini ( tautan dbfiddle di sini ) melakukan pekerjaan yang lebih baik untuk menunjukkan apa yang saya maksud:
sumber
Baik ini maupun
COLLATE
jawabannya akan memengaruhi kinerja, karena mereka membuat kueri tidak-SARGable , tetapi cara termudah untuk melakukannya (seperti yang disarankan Edgar dalam komentar) adalah:atau
sumber