在 MySQL 查询中禁用转义字符 [英] Disable escape characters in a MySQL query

查看:324
本文介绍了在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆