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
Lepaskan: 2024-12-24 17:34:17
asal
547 orang telah melayarinya

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

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

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

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!

    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