升级脚本需要更新带有特殊字符的值(换行、单引号、markdown文本)到字段中,如何兼容性更好

升级脚本需要更新带有特殊字符的值(换行、单引号、markdown文本)到字段中,如何兼容性更好

背景

有的时候,你的升级脚本(sql)需要往数据库表写入类似markdown这种带有换行甚至特殊字符的值。

你把markdown的文档源码直接写进 set val='你的markdown文本'是可以成功执行,但是有时候也会遇到报错(环境复杂),例如
在这里插入图片描述

有没有兼容性较好、健壮的方式?

操作

思路:利用base64的字串作为字面量,通过SQL函数转为我们本来应该书写的值,更新到表里。

例如将如下sql

update my_dict_table set dict_value='你要更新的字串
可能有换行的
如果有单引号会导致出错你得转义' where ...

改写为如下(我以pgsql为例,可能其他库会有不同写法)

update my_dict_table set dict_value=CONVERT_FROM(decode('你的base64字符串', 'base64'),'UTF-8') where ...

即将

你要更新的字串
可能有换行的
如果有单引号会导致出错你得转义

进行base64的编码后写入到 decode 里头

注意:需要 CONVERT_FROM,不然写入的值会有问题

由于base64编码后特殊字符(如单引号、换行)等都不是问题了,编码后得到的就是一行字串,不用担心出幺蛾子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值