Rumah > Artikel > pangkalan data > Bagaimana untuk Melarikan Tanda Peratusan Literal dalam Mod NO_BACKSLASH_ESCAPES MySQL?
Melepaskan Tanda Peratusan Literal dalam MySQL NO_BACKSLASH_ESCAPES Mod
Dalam MySQL, apabila mod NO_BACKSLASH_ESCAPES didayakan, garis miring ke belakang standard ialah () aksara melarikan diri kurang upaya. Ini boleh menimbulkan cabaran apabila cuba melepaskan peratus literal (%) atau garis bawah (_) aksara dalam pertanyaan SUKA.
Kaedah konvensional untuk melepaskan tanda peratus, menggunakan %, menjadi tidak berkesan dalam mod NO_BACKSLASH_ESCAPES. Seperti yang ditunjukkan dalam pertanyaan yang disediakan:
SELECT * FROM mytable WHERE mycol LIKE '5\% off'
...pertanyaan ini akan gagal mengembalikan hasil yang diingini apabila mod NO_BACKSLASH_ESCAPES didayakan.
Penyelesaian dengan Aksara Melarikan diri
Untuk melepaskan tanda peratus literal dalam mod NO_BACKSLASH_ESCAPES, anda mesti menggunakan watak melarikan diri. Watak escape menyatakan bahawa watak berikut harus ditafsirkan secara literal, bukan sebagai watak khas.
Dalam MySQL, watak escape boleh menjadi mana-mana aksara bukan abjad angka. Sebagai contoh, mari kita gunakan aksara sengkang ke belakang () sebagai watak melarikan diri:
select * from mytable where mycol like '5\% off' escape '\';
Dalam pertanyaan ini, sengkang ke belakang sebelum tanda peratus menunjukkan bahawa tanda peratus harus dianggap sebagai aksara literal, bukan kad bebas. .
Penyelesaian Alternatif dengan Karakter Melarikan Diri yang Berbeza
Untuk memastikan keserasian dengan kedua-dua mod NO_BACKSLASH_ESCAPES dan mod standard, anda boleh menggunakan aksara yang berbeza sebagai watak melarikan diri. Ini membolehkan pertanyaan berfungsi tanpa mengira tetapan mod.
Sebagai contoh, mari gunakan aksara paip (|) sebagai aksara melarikan diri:
select * from mytable where mycol like '5|% off' escape '|';
Dalam kes ini, aksara paip sebelum tanda peratus berfungsi sebagai watak melarikan diri, membolehkan pertanyaan berjaya dilaksanakan dalam kedua-dua mod standard dan NO_BACKSLASH_ESCAPES mod.
Atas ialah kandungan terperinci Bagaimana untuk Melarikan Tanda Peratusan Literal dalam Mod NO_BACKSLASH_ESCAPES MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!