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
Lepaskan: 2024-12-20 14:44:12
asal
624 orang telah melayarinya

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)
Salin selepas log masuk

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]'
Salin selepas log masuk

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'
Salin selepas log masuk

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!

    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