Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะจับคู่ค่าที่มีแบ็กสแลช เช่น 'a\\b' จากคอลัมน์ MySQL ได้อย่างไร


ด้วยความช่วยเหลือของโอเปอเรเตอร์ RLIKE เราสามารถทำการจับคู่ประเภทนี้ได้ แนวคิดเดียวคือการใช้แบ็กสแลชจำนวนหนึ่งในการสืบค้น MySQL ตัวอย่างด้านล่างจะทำให้ชัดเจนขึ้น -

เรามีตารางต่อไปนี้ที่มีค่าเช่น 'a\b' และ 'a\\b'

mysql> select * from backslashes;
+------+-------+
| Id   | Value |
+------+-------+
|    1 | 200   |
|    2 | 300   |
|    4 | a\\b  |
|    3 | a\b   |
+------+-------+
4 rows in set (0.10 sec)

ตอนนี้ สมมติว่าถ้าเราต้องการจับคู่ค่า 'a\\b' เราต้องเขียนแบ็กสแลชแปดตัว เป็นเพราะแบ็กสแลชที่สองไม่ได้หลบหนีโดยอันแรก ดังนั้นในการเปรียบเทียบสองลิตร เราจำเป็นต้องเพิ่มแบ็กสแลชเป็นสองเท่า แต่ในขณะที่เรากำลังค้นหาตารางสำหรับสตริงดังกล่าวจากสตริง MySQL การเสแสร้งนี้จะเกิดขึ้นสองครั้งในไคลเอนต์และอีกครั้ง ฐานข้อมูล ดังนั้น เราจำเป็นต้องใช้แบ็กสแลชสี่ครั้งเหมือนที่ทำในแบบสอบถามด้านล่าง -

mysql> Select * from backslashes where value RLIKE 'a\\\\\\\\b';
+------+-------+
| Id   | Value |
+------+-------+
|    4 | a\\b  |
+------+-------+
1 row in set (0.00 sec)

mysql> Select * from backslashes where value RLIKE 'a\\\\b';
+------+-------+
| Id   | Value |
+------+-------+
|    3 | a\b   |
+------+-------+
1 row in set (0.01 sec)