본문 바로가기
MySql

MySQL SQL : 검색 / 바꾸지 만 레코드에 값이 처음 나타날 때만

by 베이스 공부 2021. 2. 1.
반응형

post_content 열에 html 콘텐츠가 있습니다.

A를 검색하여 B로 바꾸고 싶지만 A가 레코드에 처음 나타날 때만 두 번 이상 나타날 수 있습니다.

아래 쿼리는 분명히 A의 모든 인스턴스를 B로 대체합니다.

UPDATE wp_posts SET post_content = REPLACE (post_content, 'A', 'B');

 

해결 방법

 

이것은 실제로 MySQL에서 원하는 것입니다.

UPDATE wp_post
SET post_content = CONCAT(REPLACE(LEFT(post_content, INSTR(post_content, 'A')), 'A', 'B'), SUBSTRING(post_content, INSTR(post_content, 'A') + 1));

이전 답변보다 약간 더 복잡합니다 .'A '의 첫 번째 인스턴스 (INSTR 함수 사용)를 찾은 다음 SUBSTRING 및 INSTR을 사용하여 동일한 것을 찾는 것보다 REPLACE와 조합하여 LEFT를 사용하여 해당 인스턴스 만 교체해야합니다. 'A'를 바꾸고 이전 문자열로 CONCAT합니다.

아래 내 테스트를 참조하십시오.

SET @string = 'this is A string with A replace and An Answer';
SELECT @string as actual_string
, CONCAT(REPLACE(LEFT(@string, INSTR(@string, 'A')), 'A', 'B'), SUBSTRING(@string, INSTR(@string, 'A') + 1)) as new_string;

생성 :

actual_string                                  new_string
---------------------------------------------  ---------------------------------------------
this is A string with A replace and An Answer  this is B string with A replace and An Answer

 

참조 페이지 https://stackoverflow.com/questions/12123477

 

 

반응형

댓글