2017-03-06 17 views
1

我想替換PostgresSQL中的子字符串。 例如字符串 「ABC_dog」, 'dogABCcat', 'dogABC' 到 'XYZ_dog', 'dogXYZcat', 'dogXYZ'如何替換Postgres中的子字符串

我想:

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

但它設定了新名字」。 XYZ。'

回答

0

模式'。*'匹配所有內容,所以''。 ABC。'意思是在ABC,ABC之後以及之後的所有內容中匹配所有內容,因此實際上是整個字符串。

將它改爲只是ABC,因爲這是您想要替換的位。另外,從替換中刪除。*。

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

我沒有看到使用'REGEXP_REPLACE(點)'可言,如果你不會使用正則表達式來匹配模式。只需使用普通的'REPLACE()'。 –

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;