PostgreSQL正则替换:将含fede的单词统一替换为fed.
PostgreSQL 字段值替换解决方案
你的问题出在正则表达式的匹配逻辑上:原代码用\yfede\y是匹配整个单词等于fede(不区分大小写),但你需要的是匹配以fede开头的单词,所以这个正则无法命中Federation、Federacion这类目标单词。
直接用REGEXP_REPLACE即可完成需求,无需额外的CASE WHEN(因为不匹配时函数会返回原字符串):
SELECT REGEXP_REPLACE(name, '\yfede', 'fed.', 'gi') AS nom_modifie FROM InitialValues;
参数说明:
\y:匹配单词边界,确保替换的是单词开头的"fede"gi:g表示全局替换(同一字段内所有符合条件的单词都替换),i表示不区分大小写
这样就能把所有以fede开头的单词(如Federation、Federacion、FEDERATION等)的开头部分替换为"fed.",比如Federation会变成fed.ration,Federacion变成fed.racion。
内容的提问来源于stack exchange,提问作者KeusT
相关产品推荐
相关产品推荐

