2012-02-24 33 views
5

有沒有辦法在MySQL查詢中禁用轉義字符?例如,下表:在MySQL查詢中禁用轉義字符

mysql> select * from test1; 
+------------------------+-------+ 
| name     | value | 
+------------------------+-------+ 
| C:\\media\data\temp\ |  1 | 
| C:\\media\data\temp |  2 | 
| /unix/media/data/temp |  3 | 
| /unix/media/data/temp/ |  4 | 
+------------------------+-------+ 

我想下面是一個有效的查詢:

mysql> select * from test1 where name='C:\\media\data\temp\'; 

我知道,我可以改用

mysql> select * from test1 where name='C:\\\\media\\data\\temp\\'; 

但我建設這個查詢使用my_snprintf(),所以我不得不使用

C:\\\\\\\\media\\\\data\\\\temp\\\\ 

...等等! 有沒有辦法禁用單個MySQL查詢的轉義字符?

+0

什麼語言,你在做這個?我無法在互聯網上找到my_snprintf的任何信息。你有沒有辦法創建一個可以逃脫你的功能? – 2012-02-24 09:18:26

+0

我正在使用C. my_snprintf() - http://dev.mysql.com/doc/refman/5.5/en/plugin-services.html。它主要是sprintf做的。 – 2012-02-24 09:22:18

回答

8

您可以禁用反斜線通過在SQL模式設置NO_BACKSLASH_ESCAPES逃逸:

-- save mode & disable backslashes 
SET @[email protected]@sql_mode; 
SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES'); 

-- run the query 
SELECT 'C:\\media\data\temp\'; 

-- enable backslashes 
SET @@[email protected]_sql_mode; 
1

對於MySQL命令行中的表格輸出,圍繞列的「裝箱」使一列值能夠與另一列區分開來。對於非表格式輸出(例如在批處理模式下生成或在給出--batch--silent選項時),輸出中會轉義特殊字符,以便輕鬆識別它們。換行符,製表符,NUL和反斜槓寫爲\ n,\ t,\ 0和\。 --raw選項禁用此字符轉義。

+0

'--raw'工作!謝謝! – 2014-09-16 01:14:07