达梦数据库中字符只能用单引号包裹,所以在处理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  

成功替换 结果如下

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐