Postgresql 如何在Postgres中替换子字符串
我想替换PostgreSQL中的子字符串。 例如字符串“ABC_dog”,“dogabcat”,“dogABC”到“XYZ_dog”,“dogXYZcat”,“dogXYZ” 我试过: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以及之后的所有内容,从而有效地匹配整个字符串
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()
。