在 MySQL 查询中禁用转义字符 [英] Disable escape characters in a MySQL query
本文介绍了在 MySQL 查询中禁用转义字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法在 MySQL 查询中禁用转义字符?例如,对于下表:
Is there a way to disable escape characters in a MySQL query? For example, for the following table:
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 |
+------------------------+-------+
我希望以下内容成为有效查询:
I want the following to be a valid query:
mysql> select * from test1 where name='C:\\media\data\temp\';
我知道我可以改用
mysql> select * from test1 where name='C:\\\\media\\data\\temp\\';
但我正在使用 my_snprintf() 构建此查询,因此我必须使用
But I am building this query using my_snprintf(), so there instead I have to use
C:\\\\\\\\media\\\\data\\\\temp\\\\
...等等!有没有办法为单个 MySQL 查询禁用转义字符?
...and so on! Is there a way to disable escape characters for a single MySQL query ?
推荐答案
您可以通过设置 NO_BACKSLASH_ESCAPES 在 SQL 模式下:
You can disable backslash escapes by setting NO_BACKSLASH_ESCAPES in the SQL mode:
-- save mode & disable backslashes
SET @old_sql_mode=@@sql_mode;
SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES');
-- run the query
SELECT 'C:\\media\data\temp\';
-- enable backslashes
SET @@sql_mode=@old_sql_mode;
这篇关于在 MySQL 查询中禁用转义字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文