Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memadankan Rentetan yang Dilepaskan dengan Selamat Menggunakan LIKE dalam PostgreSQL?

Bagaimana untuk Memadankan Rentetan yang Dilepaskan dengan Selamat Menggunakan LIKE dalam PostgreSQL?

DDD
DDDasal
2024-11-19 07:50:02702semak imbas

How to Safely Match Escaped Strings Using LIKE in 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!

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