Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Melarikan Tanda Peratusan Literal dalam Mod NO_BACKSLASH_ESCAPES MySQL?

Bagaimana untuk Melarikan Tanda Peratusan Literal dalam Mod NO_BACKSLASH_ESCAPES MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-26 01:29:11442semak imbas

How to Escape Literal Percentage Signs in MySQL's NO_BACKSLASH_ESCAPES Mode?

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!

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