Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melarikan Diri Watak Khas untuk Padanan Corak Tepat dalam PostgreSQL?

Bagaimana untuk Melarikan Diri Watak Khas untuk Padanan Corak Tepat dalam PostgreSQL?

Susan Sarandon
Susan Sarandonasal
2024-11-20 04:30:02426semak imbas

How to Escape Special Characters for Accurate Pattern Matching in PostgreSQL?

Melepaskan Rentetan untuk Padanan Corak dalam PostgreSQL

Untuk memadankan corak dalam PostgreSQL dengan tepat di mana rentetan yang dibekalkan pengguna mungkin mengandungi aksara corak khas seperti % , pertimbangkan untuk melepaskan watak ini untuk memastikan padanan yang tepat. Sebagai alternatif, aplikasi boleh mengendalikan proses melarikan diri.

Dalam PostgreSQL, aksara seperti % dan _ perlu dipetik menggunakan , tetapi ini boleh disesuaikan dengan klausa ESCAPE. Untuk memadankan aksara secara literal, ia mesti dipetik dua kali.

Sebagai contoh, untuk memadankan corak 'john%node1^node2.uucp@' dengan ^ sebagai aksara melarikan diri, gunakan pertanyaan berikut:

... WHERE field LIKE 'john^%node1^^node2.uucp@%' ESCAPE '^'

Walau bagaimanapun, apabila standard_conforming_strings dilumpuhkan (PG 9.1 telah mendayakannya secara lalai), digunakan untuk yang lain tujuan. Selain itu, petikan pihak pelanggan mungkin diperlukan dalam senario suntikan.

Untuk pengendalian generik dalam Go, mempertimbangkan kedua-dua string_conforming_standard dan aksara petikan alternatif, pertanyaan berikut boleh digunakan:

db.Query("SELECT * from USERS where name like replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'",
     variable_user_input);

Ini mengendalikan pelarian dan penggantian aksara khas pada bahagian pelayan, menghalang suntikan SQL dan memastikan corak yang tepat padan.

Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri Watak Khas untuk Padanan Corak Tepat 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