Rumah >pangkalan data >tutorial mysql >Padanan Rentetan PostgreSQL: LIKE vs. ~ untuk Pertanyaan Ungkapan Biasa yang Cekap?

Padanan Rentetan PostgreSQL: LIKE vs. ~ untuk Pertanyaan Ungkapan Biasa yang Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-12-24 17:34:17554semak imbas

PostgreSQL String Matching:  LIKE vs. ~ for Efficient Regular Expression Queries?

Ungkapan Biasa dalam PostgreSQL LIKE Klausa: Menggunakan LIKE vs. ~ Operator

Dalam PostgreSQL, anda boleh menggunakan ungkapan biasa untuk mencari corak tertentu dalam data. Walau bagaimanapun, jika anda menghadapi masalah dengan ekspresi anda, adalah penting untuk memahami nuansa dan batasan.

Cabaran: Watak Ketiga Tidak Padan

Pertimbangkan pertanyaan berikut :

SELECT *
FROM table
WHERE value LIKE '00[1-9]%'
-- (third character should not be 0)

Walaupun berhasrat untuk mengecualikan sebarang nilai dengan aksara ketiga '0', pertanyaan ini akan tidak sepadan dengan kriteria tersebut. Sebaliknya, ia sepadan dengan mana-mana nilai bermula dengan '00'.

Penyelesaian: Menggunakan ~ Operator

Untuk menggunakan ungkapan kurungan dengan berkesan, kita mesti menggunakan operator ungkapan biasa ~:

SELECT *
FROM tbl
WHERE value ~ '^00[^0]'

^ ... menandakan permulaan rentetan, memastikan corak padan hanya pada bermula.
1 ... mewakili kelas watak yang sepadan dengan apa-apa sahaja kecuali '0'.

Pendekatan Dioptimumkan

Untuk prestasi optimum, pertimbangkan untuk memecahkan pertanyaan kepada dua ungkapan SUKA:

SELECT *
FROM tbl
WHERE value LIKE '00%'       -- starting with '00'
AND value NOT LIKE '000%'  -- third character is not '0'

SUKA kurang kuat daripada ungkapan biasa tetapi biasanya lebih pantas. Dengan mengehadkan calon dengan ungkapan LIKE yang menjimatkan, kami meningkatkan kelajuan pertanyaan keseluruhan.

Selain itu, adalah penting untuk menggunakan ungkapan berlabuh kiri seperti nilai LIKE '00%' kerana mereka boleh memanfaatkan indeks dalam PostgreSQL. Ini amat berfaedah untuk jadual besar, manakala ungkapan biasa yang lebih kompleks mungkin tidak menyokong pengindeksan.


    Atas ialah kandungan terperinci Padanan Rentetan PostgreSQL: LIKE vs. ~ untuk Pertanyaan Ungkapan Biasa yang Cekap?. 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