Rumah >pangkalan data >tutorial mysql >Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Padanan Corak dalam Klausa LIKE PostgreSQL?

Bagaimanakah Ungkapan Biasa Boleh Meningkatkan Padanan Corak dalam Klausa LIKE PostgreSQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 14:44:12625semak imbas

How Can Regular Expressions Improve Pattern Matching in PostgreSQL's LIKE Clause?

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:

  • ^ ... sepadan dengan permulaan rentetan
  • 1 ... sepadan dengan mana-mana watak yang tidak 0

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!

    Kenyataan:
    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