我的查詢是SELECT * FROM PMT_PROJECT WHERE PROJECT_CODE LIKE '%A3\7\2011%' AND COMPANY_ID=14
。 PROJECT_CODE列包含完全匹配記錄,但是,我的上述查詢無法從MySql數據庫獲取記錄。請糾正我的關於\
特殊字符的語法,如果在上面的查詢中有錯誤或者建議我如何獲取上述記錄。像在特殊字符的mysql
2
A
回答
7
反斜槓在mysql中很困難。我只是直接從mysql客戶跑了測試,發現添加字段,你做單逃逸(兩個反斜槓):
INSERT INTO mytable (field1) VALUES ('ASDFA3\\7\\2011QWER');
但隨着LIKE
命令,需要逃逸按字面表示,所以你需要仔細逃脫聲明(四個反斜槓):
SELECT * FROM mytable WHERE field1 LIKE '%A3\\\\7\\\\2011%';
再加上逃逸必要讓你的應用層,它可以得到相當混亂。另一種方法是使用單個字符通配符:
SELECT * FROM mytable WHERE field1 LIKE '%A3_7_2011%';
另一種方法是使用 'NO_BACKSLASH_ESCAPES' 模式:
SET SESSION sql_mode='NO_BACKSLASH_ESCAPES';
SELECT * FROM mytable WHERE field1 LIKE '%A3\7\2011%';
EDIT(感謝,lucek):
或者,以保留當前sql_mode:
SET @temp_sql_mode = @@SESSION.sql_mode;
SET SESSION sql_mode = CONCAT_WS(',', @@SESSION.sql_mode, 'NO_BACKSLASH_ESCAPES');
-- YOUR_SELECT_GOES_HERE;
SET SESSION sql_mode = @temp_sql_mode;
0
反斜槓是MySQL中的標準轉義字符。如果你想從字面上使用反斜槓字符,你必須定義此查詢另一個轉義字符:
SELECT *
FROM PMT_PROJECT
WHERE PROJECT_CODE LIKE '%A3\7\2011%' ESCAPE '|' AND COMPANY_ID=14
的
+0
我試圖找到「ESCAPE'字符'」的文檔,但沒有提出任何內容。你可以用ESCAPE指向我的MySQL文檔嗎? – matt
+0
http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html –
相關問題
- 1. MYSQL特殊字符
- 2. mysql中的特殊字符
- 3. MySQL中的特殊字符
- 4. MySQL的特殊字符CONCAT_WS
- 5. Mysql刪除特殊字符後出現特定特殊字符
- 6. MySQL特殊字符問題
- 7. MySQL - 使用特殊字符
- 8. MYSQL特殊字符問題
- 9. mysql查詢特殊字符
- 10. MySQL插入特殊字符
- 11. 在mysql®中保存特殊字符? PHP
- 12. 在MySQL中存儲特殊字符
- 13. 存儲特殊字符在MySQL
- 14. 在mySQL中編碼特殊字符
- 15. 如何通過特殊字符在MySQL
- 16. 在mysql中插入特殊字符?
- 17. PHP的MySQL的特殊字符
- 18. 特殊字符的問題與MySQL的
- 19. 處理mysql中的特殊字符
- 20. 特殊字符上的MySQL錯誤
- 21. MySQL的喜歡與特殊字符「
- 22. 使用特殊字符的MySQL查詢
- 23. Mysql,如何保存「'的特殊字符?
- 24. PHP/MySQL的選擇和特殊字符
- 25. tinybutstrong不顯示mysql的特殊字符
- 26. 特殊的outfile mysql插入字符串?
- 27. mysql數據庫中的特殊字符
- 28. 具有特殊字符的Mysql查詢?
- 29. 特殊字符打破MySQL的插入
- 30. MySql密碼中的特殊字符
可能重複[如何逃脫在MySQL特殊字符(http://stackoverflow.com/questions/ 881194 /如何逃生特殊字符在MySQL) – ajreal
我的查詢是不是給出任何錯誤,它無法取得記錄,並假設我改變上面是像%A3/7/2011%',如果記錄存在在我的數據庫然後它會獲取記錄 – subodh