MySQL的字符转义

表象

表结构如下:

其中 content 字段存放json之后的数据,这个json数据里面 extra 字段的内容又是一段json,如下:

sql 复制代码
INSERT INTO `future`.`test_escape_character`

( `id`, `title`, `content`, `is_del` )

VALUES
	( 2, 
	'我的博客',
    '{"web_id":31415,"name":"清澄秋爽","extra":"{\"url\":\"https://dashen.tech\",\"web_icon\":\"https://dashen.tech/favicon.ico\",\"desc\":\"苹果树下思索者\"}","online":1}',
	1 );

写入之后,复制 content 字段,发现extra 无法解析了

而将 content 字段{"web_id":31415,"name":"清澄秋爽","extra":"{\"url\":\"https://dashen.tech\",\"web_icon\":\"https://dashen.tech/favicon.ico\",\"desc\":\"苹果树下思索者\"}","online":1}直接在navicat中写入, 则可成功解析.

对比发现,能成功解析的extra,多了\.(这是json中的json必须要有的,起转义"的作用)

但为何insert进去的数据,就少了这个\?

即我们想要保存的是{"web_id":31415,"name":"清澄秋爽","extra":"{\"url\":\"https://dashen.tech\",\"web_icon\":\"https://dashen.tech/favicon.ico\",\"desc\":\"苹果树下思索者\"}","online":1}, insert写进去之后,却成了

{"web_id":31415,"name":"清澄秋爽","extra":"{"url":"https://dashen.tech","web_icon":"https://dashen.tech/favicon.ico","desc":"苹果树下思索者"}","online":1}

原由

这个问题是因为 MySQL的字符串转义 导致.

MySQL中,特殊字符用 反斜线('\')开始, 从而导致**"url"** 被转义为"url",进而使保存的数据json解析失败.

解决

解决办法也非常简单,将用在转义起始的\也进行转义即可.

MySQL用\\来转义 反斜线('\')字符,即在insert时,将 content 字段改为:

sql 复制代码
'{"web_id":31415,"name":"清澄秋爽","extra":"{\\"url\\":\\"https://dashen.tech\\",\\"web_icon\\":\\"https://dashen.tech/favicon.ico\\",\\"desc\\":\\"苹果树下思索者\\"}","online":1}'

这样写入的数据,就符合预期了~


更多MySQL的转义字符,可参考

MySql字符转义

MySQL中执行sql语句反斜杠需要进行转义否则会被吃掉

相关推荐
TDengine (老段)几秒前
TDengine 字符串函数 REGEXP_IN_SET 用户手册
数据库·物联网·mysql·时序数据库·tdengine·涛思数据
刘一说2 分钟前
深入理解 Spring Boot 高级特性:条件化 Bean 注册机制
java·spring boot·后端
用户69371750013843 分钟前
Kotlin 函数详解:命名参数与默认参数值
android·后端·kotlin
启山智软4 分钟前
使用 Spring Boot + Vue.js 组合开发多商户商城(B2B2C平台)是一种高效的全栈技术方案
vue.js·spring boot·后端
用户905558421480510 分钟前
请求失败溯源Netty关闭连接源码流程
后端
踏浪无痕17 分钟前
准备手写Simple Raft(一):想通Raft的核心问题
分布式·后端
00后程序员22 分钟前
Charles抓包实战,开发者如何通过流量分析快速定位系统异常?
后端
用户685453759776926 分钟前
为什么你的volatile总出bug?因为你没搞懂内存屏障这回事儿 🤯
后端
合作小小程序员小小店36 分钟前
web开发,在线%小区,物业%管理系统,基于idea,html,jsp,java,ssm,mysql数据库
java·数据库·mysql·jdk·intellij-idea