2017-03-06 1 views
1

PostgresSQL의 부분 문자열을 대체하고 싶습니다. 는 예를 들어 문자열 "ABC_dog ','dogABCcat ''XYZ_dog '로,'dogABC ','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 = replace(name , 'ABC', 'XYZ'); 

는하지만, 유의 사항 :

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

: 대부분의 행을 교체 할 패턴이 없다면, 먼저 문제가되는 하위 문자열에 대한 테스트를 더 낫다 정규식을 사용하여 패턴을 일치시키지 않을 것입니다. 그냥 대신'REPLACE()'를 사용하십시오. –

5

가장 간단한 해결책은 replace() 기능을 사용하는 것입니다. 당신이있어 모든 경우`) 나는`REGEXP_REPLACE을 (사용하는 점을 볼 수 없습니다

UPDATE my_table SET name = replace(name , 'ABC', 'XYZ') 
WHERE position('ABC' in name) > 0; 
관련 문제