升级脚本需要更新带有特殊字符的值(换行单引号markdown文本)到字段中,如何兼容性更好
Posted 石头StoneWang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了升级脚本需要更新带有特殊字符的值(换行单引号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编码后特殊字符(如单引号、换行)等都不是问题了,编码后得到的就是一行字串,不用担心出幺蛾子。
以上是关于升级脚本需要更新带有特殊字符的值(换行单引号markdown文本)到字段中,如何兼容性更好的主要内容,如果未能解决你的问题,请参考以下文章