Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melakukan Carian Tidak Peka Huruf dalam Oracle?
Mencapai Carian Tidak Peka Huruf dalam Pangkalan Data Oracle
Pengendali perbandingan lalai Oracle (=, SUKA) adalah sensitif huruf besar-besaran. Panduan ini menggariskan beberapa teknik untuk melakukan carian tidak peka huruf besar-kecil dengan berkesan.
Kaedah 1: Fungsi Penukaran Kes
Tukar kedua-dua data lajur dan rentetan carian kepada huruf besar atau huruf kecil menggunakan UPPER()
atau LOWER()
:
<code class="language-sql">SELECT * FROM my_table WHERE UPPER(column_1) = UPPER('my_string');</code>
Untuk prestasi optimum, buat indeks berasaskan fungsi pada lajur yang ditukar:
<code class="language-sql">CREATE INDEX my_index ON my_table (LOWER(column_1));</code>
Kaedah 2: Ungkapan Biasa
Oracle 10g dan versi yang lebih baru menawarkan REGEXP_LIKE()
dengan bendera 'i' untuk padanan tidak sensitif huruf besar-besaran:
<code class="language-sql">SELECT * FROM my_table WHERE REGEXP_LIKE(column_1, '^my_string$', 'i');</code>
Ingat untuk menyertakan sauh permulaan rentetan (^
) dan akhir rentetan ($
) untuk padanan tepat.
Kaedah 3: Pelarasan Parameter Sesi
Melaraskan parameter sesi NLS_SORT
dan NLS_COMP
secara global mengubah sensitiviti huruf besar untuk semua perbandingan dalam sesi itu:
<code class="language-sql">ALTER SESSION SET NLS_SORT = BINARY_CI; ALTER SESSION SET NLS_COMP = LINGUISTIC;</code>
Untuk meningkatkan lagi prestasi, pertimbangkan indeks linguistik:
<code class="language-sql">CREATE INDEX my_linguistic_index ON my_table (NLSSORT(column_1, 'NLS_SORT = BINARY_CI'));</code>
Pendekatan terbaik bergantung pada keperluan khusus anda. Walau bagaimanapun, pengindeksan yang berkesan adalah penting untuk mengekalkan prestasi pertanyaan dalam semua senario.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Carian Tidak Peka Huruf dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!