Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memadankan Rentetan yang Dilepaskan dengan Selamat Menggunakan LIKE dalam PostgreSQL?
Matching Escaped Strings dalam PostgreSQL
Dalam PostgreSQL, menggunakan operator LIKE untuk memadankan corak boleh menjadi masalah apabila berurusan dengan aksara khas seperti '_ ' dan '%'. Watak ini boleh memadankan kad bebas, yang membawa kepada hasil yang tidak diingini. Untuk memastikan padanan literal, adalah penting untuk melepaskannya dengan betul.
Watak melarikan diri yang digunakan untuk SUKA lazimnya ialah garis miring ke belakang (), yang harus diulang dua kali untuk mewakili satu aksara melarikan diri dalam corak. Sebagai contoh, "rob_" akan melepaskan aksara '_', membenarkannya memadankan hanya rentetan yang benar-benar bermula dengan "rob_". Walau bagaimanapun, dalam PostgreSQL 9.1, watak escape lalai boleh berubah bergantung pada tetapan standard_conforming_strings.
Untuk mengelakkan isu yang berpotensi, adalah disyorkan untuk menggunakan fungsi REPLACE untuk menggantikan aksara khas dengan persamaan yang dilepaskan di bahagian pelayan. Pendekatan ini adalah lebih selamat daripada mengendalikan melarikan diri pada pihak klien, kerana ia menghapuskan keperluan untuk pengesahan input pengguna tambahan.
Sebagai contoh, pertanyaan berikut akan menggantikan semua kejadian '_' dan '%' dengan rakan sejawat mereka yang melarikan diri dan kemudian melakukan perbandingan LIKE, memastikan corak dipadankan secara literal:
SELECT * FROM users WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
Dengan menggunakan penggantian bahagian pelayan, anda boleh memastikan padanan corak yang tepat dan jelas sambil mengelakkan potensi kelemahan keselamatan.
Atas ialah kandungan terperinci Bagaimana untuk Memadankan Rentetan yang Dilepaskan dengan Selamat Menggunakan LIKE dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!