我想替換PostgresSQL中的子字符串。 例如字符串 「ABC_dog」, 'dogABCcat', 'dogABC' 到 'XYZ_dog', 'dogXYZcat', 'dogXYZ'如何替換Postgres中的子字符串
我想:
UPDATE my_table SET name = regexp_replace(name , '.*ABC.*', '.*XYZ.*', 'g')
但它設定了新名字」。 XYZ。'
我想替換PostgresSQL中的子字符串。 例如字符串 「ABC_dog」, 'dogABCcat', 'dogABC' 到 'XYZ_dog', 'dogXYZcat', 'dogXYZ'如何替換Postgres中的子字符串
我想:
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')
最簡單的解決辦法是使用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_REPLACE(點)'可言,如果你不會使用正則表達式來匹配模式。只需使用普通的'REPLACE()'。 –