Rumah >pangkalan data >tutorial mysql >Padanan Rentetan PostgreSQL: LIKE vs. ~ untuk Pertanyaan Ungkapan Biasa yang Cekap?
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!