如何在Postgres

时间:2017-03-06 08:28:29

标签: postgresql

我想替换PostgreSQL中的子串。 例如string" ABC_dog" ,' dogABCcat',' dogABC' to' XYZ_dog',' dogXYZcat',' dogXYZ'

我试过了:

UPDATE my_table SET name =  regexp_replace( name , '.*ABC.*', '.*XYZ.*', 'g')

但它为'。 XYZ设置了新名称。'

2 个答案:

答案 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')