Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Memerlukan Melarikan Diri untuk LIKE tetapi Bukan untuk =?

Mengapa MySQL Memerlukan Melarikan Diri untuk LIKE tetapi Bukan untuk =?

Mary-Kate Olsen
Lepaskan: 2025-01-06 21:04:41
asal
885 orang telah melayarinya

Why Does MySQL Require Backslash Escaping for LIKE but Not for =?

Escaping Backslash dalam MySQL: Membongkar Perbezaan antara Equal (=) dan LIKE Operators

Dalam MySQL, aksara backslash () memainkan peranan penting dalam manipulasi rentetan. Apabila menggunakan operator yang sama (=), melarikan diri dari garis miring ke belakang adalah tidak diperlukan, tidak seperti operator LIKE, yang memerlukan garis miring ke belakang tambahan.

Pertimbangkan pertanyaan berikut:

(SELECT * FROM `titles` WHERE title = 'test\')
UNION ALL
(SELECT * FROM `titles` WHERE title LIKE 'test\\')
Salin selepas log masuk

Keluaran bagi pertanyaan ini mendedahkan bahawa kedua-dua keadaan sepadan dan mengembalikan baris yang sama. Ini mungkin kelihatan berlawanan dengan intuisi kerana syarat kedua mengandungi garis serong ke belakang tambahan.

Mengapa Melarikan Diri Tidak Diperlukan untuk (=) tetapi Diperlukan untuk LIKE?

The jawapan terletak pada tingkah laku unik pengendali LIKE. Tidak seperti pengendali yang sama (=), LIKE menggunakan garis miring ke belakang sebagai aksara melarikan diri. Ini bermakna bahawa mana-mana garisan ke belakang dalam corak SUKAI mesti digandakan untuk dipadankan secara literal.

MySQL melakukan penggandaan ini dalam dua peringkat:

  • Sekali oleh penghurai, yang memotong satu garisan ke belakang.
  • Sekali lagi apabila padanan corak dibuat, meninggalkan satu garis miring ke belakang untuk dipadankan dengan rentetan.

Oleh itu, dalam keadaan pertama (tajuk = 'ujian'), MySQL secara automatik melepaskan garisan ke belakang, menghasilkan perlawanan. Walau bagaimanapun, dalam keadaan kedua (tajuk SUKA 'ujian\'), garis miring ke belakang tambahan diperlukan kerana ia mengimbangi dua pusingan pelucutan garisan belakang.

Watak Melarikan Diri Tersuai untuk Corak LIKE

Dalam senario tertentu, mungkin diingini untuk menggunakan watak melarikan diri yang berbeza untuk corak SUKA. Ini boleh dicapai menggunakan kata kunci ESCAPE, seperti yang ditunjukkan di bawah:

SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
Salin selepas log masuk

Dengan menyatakan kata kunci ESCAPE, '|' watak menjadi watak melarikan diri dan bukannya lalai ''. Ini membolehkan anda menggunakan aksara sengkang ke belakang secara literal dalam corak SUKA tanpa perlu menggandakannya.

Atas ialah kandungan terperinci Mengapa MySQL Memerlukan Melarikan Diri untuk LIKE tetapi Bukan untuk =?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan