使用模式匹配字符的postgresql替换函数
我在postgresql数据库中有一个名为“OptionsDetail”的表,其列名为“URL”。“URL”列包含以下数据 统一资源定位地址 现在我想将URL中的数据替换为 统一资源定位地址 我编写了以下查询来执行上述功能使用模式匹配字符的postgresql替换函数,sql,postgresql,Sql,Postgresql,我在postgresql数据库中有一个名为“OptionsDetail”的表,其列名为“URL”。“URL”列包含以下数据 统一资源定位地址 现在我想将URL中的数据替换为 统一资源定位地址 我编写了以下查询来执行上述功能 UPDATE "OptionsDetail" SET "URL" = replace("URL",'http://%/ebw/file1','/file1') WHERE "URL" LIKE '%/ebw/file1%'; 还有另一种我这样写的方式 UPDAT
UPDATE "OptionsDetail" SET "URL" = replace("URL",'http://%/ebw/file1','/file1') WHERE "URL" LIKE '%/ebw/file1%';
还有另一种我这样写的方式
UPDATE "OptionsDetail" SET "URL" = replace("URL",'%/ebw/file1','/file1') WHERE "URL" LIKE '%/ebw/file1%';
查询正在成功执行,例如:200行受影响,但“URL”列数据没有改变我需要的方式,数据保持原样
请帮助我解决此问题问题是
replace
不支持通配符,如%
:
replace("URL",'http://%/ebw/file1','/file1')
^^^
您可以改为使用:
请注意,regexp\u replace
使用的通配符与类似的通配符不同。在正则表达式中,“任意字符的任意数”是*
而不是%
replace
不支持通配符。您需要regexp\u replace
我注意到的一件事是,如果在regexp\u replace
中使用%
而不是
,它将充当非捕获通配符,因此匹配的任何内容都不会被替换。
UPDATE "OptionsDetail" SET "URL" = replace("URL",'%/ebw/file1','/file1') WHERE "URL" LIKE '%/ebw/file1%';
replace("URL",'http://%/ebw/file1','/file1')
^^^
UPDATE YourTable
SET URL = regexp_replace(URL, 'http://.*/ebw/file1', '/file1')
WHERE URL LIKE '%/ebw/file1%'