Postgresql 如何在Postgres中替换子字符串

Postgresql 如何在Postgres中替换子字符串,postgresql,Postgresql,我想替换PostgreSQL中的子字符串。 例如字符串“ABC_dog”,“dogabcat”,“dogABC”到“XYZ_dog”,“dogXYZcat”,“dogXYZ” 我试过: UPDATE my_table SET name = regexp_replace( name , '.*ABC.*', '.*XYZ.*', 'g') 但是它将新名称设置为“.XYZ”。模式“*”匹配所有内容,因此“.ABC”意味着匹配ABC之前的所有内容、ABC以及之后的所有内容,从而有效地匹配整个字符串

我想替换PostgreSQL中的子字符串。 例如字符串“ABC_dog”,“dogabcat”,“dogABC”到“XYZ_dog”,“dogXYZcat”,“dogXYZ”

我试过:

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

但是它将新名称设置为“.XYZ”。

模式“*”匹配所有内容,因此“.ABC”意味着匹配ABC之前的所有内容、ABC以及之后的所有内容,从而有效地匹配整个字符串

将其更改为ABC,因为这是您要替换的位。另外,从更换件上拆下。*

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

模式“*”匹配所有内容,因此“.ABC”意味着匹配ABC之前的所有内容、ABC以及之后的所有内容,从而有效地匹配整个字符串

将其更改为ABC,因为这是您要替换的位。另外,从更换件上拆下。*

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

最简单的解决方案是使用
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;

最简单的解决方案是使用
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;

如果您不打算使用正则表达式来匹配模式,我看不出使用
REGEXP\u REPLACE()
有什么意义。只需使用普通的
REPLACE()
即可。如果您不打算使用正则表达式来匹配模式,我看不出使用
REGEXP\u REPLACE()
有什么意义。只需使用普通的
REPLACE()