Rumah >pangkalan data >tutorial mysql >Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Padanan Corak dalam Klausa LIKE PostgreSQL?
Ungkapan Biasa dalam Klausa LIKE PostgreSQL
Dalam PostgreSQL, klausa LIKE biasanya digunakan untuk padanan corak dalam perbandingan rentetan. Walau bagaimanapun, ungkapan biasa juga boleh digunakan untuk meningkatkan fleksibiliti klausa LIKE. Mari kita mendalami senario biasa di mana penggunaan ungkapan biasa boleh terbukti bermanfaat.
Masalahnya:
Pertimbangkan coretan pertanyaan berikut:
SELECT * FROM table WHERE value LIKE '00[1-9]%' -- (third character should not be 0)
Pertanyaan ini bertujuan untuk mendapatkan semula baris di mana lajur nilai bermula dengan '00' diikuti dengan digit antara 1 dan 9 (tetapi bukan 0), diikuti dengan sebarang bilangan aksara. Walau bagaimanapun, pertanyaan gagal sepadan dengan rentetan yang dimaksudkan '0090D0DF143A'.
Penyelesaian:
Untuk menyelesaikan masalah ini, pengendali ungkapan biasa ~ harus digunakan dan bukannya pengendali LIKE. Selain itu, ungkapan biasa itu sendiri boleh diubah suai untuk mencapai tingkah laku yang diingini:
SELECT * FROM tbl WHERE value ~ '^00[^0]'
Dalam ungkapan ini:
Amalan Terbaik:
Sebagai alternatif, pertanyaan berikut menggunakan berbilang ungkapan LIKE disyorkan untuk kejelasan dan pengoptimuman prestasi:
SELECT * FROM tbl WHERE value LIKE '00%' -- starting with '00' AND value NOT LIKE '000%' -- third character is not '0'
Menggunakan klausa LIKE dan NOT LIKE memastikan kecekapan dengan mengecilkan set calon menggunakan ungkapan LIKE yang kurang kompleks sebelum ini menggunakan penolakan ungkapan biasa yang lebih mahal.
Perhatikan bahawa indeks boleh digunakan untuk mempercepatkan pertanyaan yang melibatkan ungkapan biasa mudah seperti dalam contoh ini. Untuk maklumat lebih terperinci, rujuk dokumentasi PostgreSQL tentang perbezaan antara LIKE dan ~.
Atas ialah kandungan terperinci Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Padanan Corak dalam Klausa LIKE PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!