Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melakukan Carian Tidak Peka Huruf dalam Oracle?

Bagaimana untuk Melakukan Carian Tidak Peka Huruf dalam Oracle?

Barbara Streisand
Lepaskan: 2025-01-17 11:31:09
asal
769 orang telah melayarinya

How to Perform Case-Insensitive Searches in Oracle?

Lakukan carian tidak peka huruf besar-kecil dalam pangkalan data Oracle

Operator perbandingan (seperti SUKA, =, dsb.) dalam pangkalan data Oracle adalah sensitif huruf besar secara lalai. Ini boleh menimbulkan cabaran apabila anda perlu mencari data tanpa mengambil kira kes. Untuk menyelesaikan masalah ini, Oracle menyediakan beberapa cara untuk melakukan carian tidak peka huruf besar-kecil tanpa bergantung pada indeks teks penuh.

Kaedah 1: Penukaran kes

Anda boleh menggunakan fungsi UPPER() atau LOWER() untuk memaksa semua data berada dalam kes yang sama. Contohnya:

<code class="language-sql">select * from my_table where upper(column_1) = upper('my_string');</code>
Salin selepas log masuk

atau

<code class="language-sql">select * from my_table where lower(column_1) = lower('my_string');</code>
Salin selepas log masuk

Ini mungkin memerlukan imbasan jadual penuh jika column_1 tidak diindeks pada upper(column_1) atau lower(column_1) masing-masing. Untuk mengelakkan ini, buat indeks berasaskan fungsi:

<code class="language-sql">create index my_index on my_table ( lower(column_1) );</code>
Salin selepas log masuk

Untuk operator LIKE, tambahkan % di sekeliling rentetan carian:

<code class="language-sql">select * from my_table where lower(column_1) LIKE lower('my_string') || '%';</code>
Salin selepas log masuk

Kaedah 2: Ekspresi biasa

Fungsi REGEXP_LIKE() yang diperkenalkan bermula dengan Oracle 10g menyediakan carian tidak peka huruf besar-kecil dengan menyatakan parameter padanan 'i':

<code class="language-sql">select * from my_table where regexp_like(column_1, '^my_string$', 'i');</code>
Salin selepas log masuk
Salin selepas log masuk

Untuk menggunakan ini sebagai pengendali kesaksamaan, nyatakan permulaan dan penghujung rentetan (menggunakan ^ dan $):

<code class="language-sql">select * from my_table where regexp_like(column_1, '^my_string$', 'i');</code>
Salin selepas log masuk
Salin selepas log masuk

Untuk carian setara LIKE, alih keluar ^ dan $. Ambil perhatian bahawa rentetan carian mungkin mengandungi aksara yang ditafsirkan secara berbeza oleh enjin ungkapan biasa.

Kaedah 3: Konfigurasi peringkat sesi

Parameter NLS_SORT mentakrifkan susunan perbandingan perbandingan, termasuk = dan SUKA. Anda boleh mendayakan pengisihan tidak peka huruf besar-kecil untuk semua pertanyaan dalam sesi dengan menetapkannya kepada BINARY_CI:

<code class="language-sql">alter session set nls_sort=BINARY_CI;</code>
Salin selepas log masuk

Anda juga mungkin mahu menetapkan NLS_COMP kepada LINGUISTIC untuk memaksa perbandingan bahasa:

<code class="language-sql">alter session set nls_comp=LINGUISTIC;</code>
Salin selepas log masuk

Untuk meningkatkan prestasi, anda boleh mencipta indeks bahasa:

<code class="language-sql">create index my_linguistc_index on my_table (NLSSORT(column_1, 'NLS_SORT = BINARY_CI'));</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Carian Tidak Peka Huruf dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan