![](/img/trans.png)
[英]mysql - How to handle query search with special characters /(forward slash) and \(backslash)
[英]mysql-How to handle query search with \(backslash)?
我已經在mysql表中插入了一個帶有backslash(\\)
的列,例如user\\12345
但是當我在表中看到值時,我沒有看到forward slash(\\)
。 我只是看到user12345 。
當我用以下可能的方法用backslash(\\)
查詢剛插入的行時,我總是得到零記錄。
select * from users where user='user12345'
select * from users where user='user\12345'
select * from users where user='user\\12345'
當我將列值復制粘貼到記事本中時,我可以看到每個列值的末尾都有一個回車符。 user12345CRLF,截至目前我無法更新/刪除回車。 但是我想用回車來獲取記錄。 我怎樣才能做到這一點?
我不想使用類似查詢,並且我想查詢確切的用戶名。 我怎樣才能做到這一點?
反斜杠字符\\用於轉義序列。 當您插入“ user \\ 12345”之類的值時,默認情況下,mysql服務器會將其作為轉義字符“ \\ 1”,但它不是任何特殊字符,因此會從字符串中丟棄\\。
Hitesh> update test set fname='user\344';
Query OK, 2 rows affected (0.06 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Hitesh> select fname from test;
+---------+
| fname |
+---------+
| user344 |
| user344 |
+---------+
2 rows in set (0.00 sec)
如果要以字符串形式存儲\\,則應使用\\
Hitesh> update test set fname='user\\344';
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Hitesh> select fname from test;
+----------+
| fname |
+----------+
| user\344 |
| user\344 |
+----------+
2 rows in set (0.00 sec)
如果您不想將\\設置為轉義字符,則可以啟用sql模式NO_BACKSLASH_ESCAPES。
Hitesh> SET sql_mode = 'NO_BACKSLASH_ESCAPES';
Query OK, 0 rows affected (0.00 sec)
Hitesh> update test set fname='user\344';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
Hitesh> select fname from test;
+----------+
| fname |
+----------+
| user\344 |
| user\344 |
+----------+
2 rows in set (0.00 sec)
對於回車到列末尾的情況,在查詢中可以在where子句中找到以\\ r結尾的字符串,並選擇列可以跳過最后一個字符\\ r
Hitesh> set @@sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
Hitesh> update test set fname='user344\r';
Query OK, 2 rows affected (0.17 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Hitesh> select left( fname, CHAR_LENGTH(fname)-1) as fname from test where fname like '%\r';
+---------+
| fname |
+---------+
| user344 |
| user344 |
+---------+
2 rows in set (0.00 sec)
再次感謝@ Hitesh,@ Barmar。 我想出了完全匹配搜索查詢。 select * from users where user='user12345\\r'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.