MySQL运维实战(4.6) SQL_MODE之NO_BACKSLASH_ESCAPES

作者:俊达

在MySQL中,默认情况下,反斜杠(\)被用作转义字符,转义反斜杠(\)后一个字符;当设置NO_BACKSLASH_ESCAPES后,反斜杠(\)将不作为转义字符,而被视为普通字符。

下面是一个示例,说明了这两种情况的区别:
未设置NO_BACKSLASH_ESCAPES模式

sql 复制代码
mysql> create table t_escape(id int, a varchar(100));
Query OK, 0 rows affected (0.01 sec)

-- 默认情况,反斜杠是转义符,会改变后一个字符的含义。
mysql> set sql_mode='';
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t_escape values(1, 'a\'b');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t_escape values(1, 'a\\b');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_escape;
+------+------+
| id   | a    |
+------+------+
|    1 | a'b  |
|    2 | a\b  |
+------+------+
2 rows in set (0.00 sec)

设置NO_BACKSLASH_ESCAPES

sql 复制代码
SET sql_mode = 'NO_BACKSLASH_ESCAPES';
-- 这个SQL中单引号不匹配,报语法错误
mysql> insert into t_escape values(3, 'a\'b');
    '> ';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b');
'' at line 1

-- 2个反斜杠都写入到表中
mysql> insert into t_escape values(4, 'a\\b');
Query OK, 1 row affected (0.01 sec)


-- 单引号不能用反斜杠转义,使用单引号转义单引号(使用2个单引号代表一个单引号)。
mysql> insert into t_escape values(5, 'a''b');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_escape;
+------+------+
| id   | a    |
+------+------+
|    1 | a'b  |
|    2 | a\b  |
|    4 | a\\b |
|    5 | a'b  |
+------+------+
4 rows in set (0.00 sec)

总之,NO_BACKSLASH_ESCAPES模式决定了反斜杠在MySQL中的转义行为。设置了该模式后,反斜杠将被视为普通字符,而不设置该模式则反斜杠用来转义后一个字符。通过设置NO_BACKSLASH_ESCAPES,可以避免过度使用反斜杠转义符,使操作更加简洁和易读。

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

相关推荐
SEO_juper几秒前
2026年用Python做关键词聚类:把1000个关键词自动分成内容选题(附完整代码)
大数据·运维·人工智能·seo·外贸独立站
SatanII8 分钟前
容器运行时Containerd完整学习笔记|原理、安装、ctr/nerdctl/crictl实操全梳理
运维·docker·华为云·containerd
迷枫71212 分钟前
MySQL 迁移到达梦过程中遇到的一些问题记录
sql
是个西兰花26 分钟前
UDP套接字编程
运维·服务器·网络
不正经的码狗43 分钟前
# Navicat Premium 17 安装使用指南
mysql·navicat premium
是店小二呀3 小时前
鸿蒙PC_Dart-Sass-ohos适配全记录
linux·运维·windows
智能运维指南9 小时前
代码管理软件如何融入 DevOps 工具链?全链路联通的 5 个关键点
运维·devops·信创适配·嘉为蓝鲸
充电zcx9 小时前
Linux:4:开发工具详解
linux·运维·服务器
Lucifer三思而后行13 小时前
Oracle SQL 优化实战:明明走了索引,SQL 还是慢?
sql·oracle
gongfeng300013 小时前
福州企业级AI自动化获客解决方案品牌梳理与适用场景分析
运维·人工智能·自动化·g-claw ai员工