达梦数据库中字符只能用单引号包裹,所以在处理URL的时候很麻烦
单引号是它的系统符号,所以任何出现单引号的地方都再加一个单引号
就可以转义 显示单引号本身
比如插入一个多行文本 例如一个查询 只需要替换全部 ' 为两个 '' 就可以写入
需求是替换数据库中数据的URL,所以还要结合正则使用。
测试数据如下格式 目标是去掉函数名和文件名 并拼接本地URL前缀
如果要插入测试数据到数据库 以下的测试数据需要 替换'=>'' 两个单引号
asdasda<a href="saveAs('/file/Filedata/11/36.jpg','图片.jpg')"/>sadsadsa
asdasddsadadsda<a href="saveAs('/file/Filedata/11/36.jpg','图片.jpg')"/>
执行以下SQL
SELECT
-- 去掉后面的文件名必用正则
'转义'||'''' AS 奇怪的转义,
'saveAs(''' AS 转义,
CONTENT AS 原文,
-- 再去掉 函数后面的文件名和括号
REGEXP_REPLACE(
-- 先替换 saveAs(''/file => http://www.baidu.com/static
REPLACE(CONTENT, 'saveAs(''/file', 'http://www.baidu.com/static') ,
'('','')(.*?)''\)',
'',
1,
0,
'i'
) AS 方法一,
-- 再替换file为 指定url前缀http://www.baidu.com/static
REPLACE(
-- 先去掉saveAs开头和函数文件名和括号
REGEXP_REPLACE(
CONTENT ,
-- 正则里转义 括号 \( replace 里不用 dm里转义单引号 '=> ''
'(saveAs\('')|('','')(.*?)''\)',
'',
1,
0,
'i'
) , '/file', 'http://www.baidu.com/static'
)AS 方法二
FROM CESHI2
成功替换 结果如下