我想替换PostgreSQL中的子串。 例如string" ABC_dog" ,' dogABCcat',' dogABC' to' XYZ_dog',' dogXYZcat',' dogXYZ'
我试过了:
UPDATE my_table SET name = regexp_replace( name , '.*ABC.*', '.*XYZ.*', 'g')
但它为'。 XYZ设置了新名称。'
答案 0 :(得分:5)
最简单的解决方案是使用replace()
函数:
UPDATE my_table SET name = replace(name , 'ABC', 'XYZ');
但请注意,这将取代表格中的 所有 行。除非大多数行都有您想要替换的模式,否则最好先测试有问题的子字符串:
UPDATE my_table SET name = replace(name , 'ABC', 'XYZ')
WHERE position('ABC' in name) > 0;
答案 1 :(得分:0)
模式'。*'匹配所有内容,所以'。 ABC。'表示匹配ABC之前的所有内容,ABC以及之后的所有内容,以及整个字符串。
将其更改为ABC,因为这是您想要替换的位。另外,从替换中删除。*。
UPDATE my_table SET name = regexp_replace( name , 'ABC', 'XYZ', 'g')