mysql - 在 MySQL 查询中禁用转义字符

标签 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 查询禁用转义字符?

最佳答案

您可以通过设置 NO_BACKSLASH_ESCAPES 来禁用反斜杠转义在 SQL 模式下:

-- 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 - 在 MySQL 查询中禁用转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428087/

相关文章:

mysql - ejabberd MySQL连接错误

php - 统计MySQL中的投票频率

mysql - ErrCode 为 "Select Into Outfile with a variable"- 权限困惑

php - 在 while 查询中嵌套 mysql 查询?

php - 在为这种情况设计数据库时遇到问题

mysql - 如何迁移现有记录以匹配 Rails 中的新 ORM

具有完整权限的mysql数据库权限

MySQL - GROUP_CONCAT 与联接,产生 1054 错误

php - 如何设置对话历史记录和处理已删除的消息

php - MySQL int 没有正确保存到数据库中