[mysql] MySQL은 필드에서 일부 텍스트를 검색하고 바꿉니다.

어떤 MySQL 쿼리가 테이블의 특정 필드에서 텍스트를 검색하고 대체합니까?

즉 검색 foo과 교체 bar값으로 필드와 레코드가되도록 hello foo된다 hello bar.



답변

테이블 이름과 해당 필드를 변경 table_name하고 field일치 시키십시오.

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;

답변

UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');


답변

 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

예를 들어, John의 모든 발생을 Mark로 바꾸려면 아래에서 사용합니다.

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');


답변

다른 필드의 값을 기반으로 검색하고 바꾸려면 CONCAT을 수행하십시오.

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));

다른 사람이 한 번에 찾을 수 있도록 여기에 두십시오.


답변

내 경험상 가장 빠른 방법은

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';

INSTR()방법은 두 번째로 빠른 및 생략 WHERE모두 절하면 열이 인덱싱되지 않은 경우에도, 가장 느린입니다.


답변

교체 문자열 함수는 할 것입니다.


답변

위의 명령 줄을 다음과 같이 사용했습니다. update TABLE-NAME set FIELD = replace (FIELD, ‘And’, ‘and’); 목적은 And를 and로 대체하는 것이 었습니다 ( “A”는 소문자 여야 함). 문제는 데이터베이스에서 “And”를 찾을 수 없지만 “% And %”와 같이 사용하면 단어의 일부이거나 이미 소문자 인 다른 AND와 함께 찾을 수 있다는 것입니다.