Ungkapan Biasa dalam Klausa SEPERTI PostgreSQL
Pertanyaan ini bertujuan untuk memadankan nilai bermula dengan '00' dan mempunyai aksara ketiga berbeza daripada '0 ', seperti dalam '0090D0DF143A'. Walau bagaimanapun, pertanyaan berikut gagal dipadankan:
SELECT * FROM table WHERE value LIKE '00[1-9]%'
Untuk menangani isu ini, pertimbangkan untuk menggunakan operator ungkapan biasa '~' bersama-sama dengan ungkapan kurungan di luar klausa LIKE. Walau bagaimanapun, untuk prestasi optimum, gabungan klausa SUKA dan TIDAK SUKA disyorkan:
SELECT * FROM tbl WHERE value LIKE '00%' AND value NOT LIKE '000%'
Klausa SUKA dengan cekap mengecilkan padanan berpotensi dengan ungkapan berlabuh kiri, manakala klausa NOT LIKE memperhalusi lagi keputusan. Postgres boleh menggunakan indeks untuk ungkapan sedemikian, menghasilkan pelaksanaan pertanyaan yang lebih pantas.
Selain itu, adalah penting untuk menambat corak pada permulaan rentetan menggunakan '^' dalam ungkapan biasa dan menggunakan ungkapan kurungan ' 1' untuk memadankan mana-mana watak selain daripada '0'.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyoal PostgreSQL dengan Cekap untuk Nilai Bermula dengan '00' dan Aksara Ketiga Bukan Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!