문제

어떤 MySQL 쿼리가 테이블의 특정 필드에서 텍스트 검색을 수행하고 교체 할 것인가?

IE 검색 foo 그리고 대체하십시오 bar 따라서 가치가있는 필드가있는 레코드 hello foo becomes 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_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));

다른 사람들이 한 번에 찾을 수 있도록 여기에 이것을 갖도록하기 만하면됩니다.

 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');

그만큼 바꾸다 문자열 함수가 그렇게합니다.

내 경험상 가장 빠른 방법은입니다

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

그만큼 INSTR() 길은 두 번째로 빠르고 생략합니다 WHERE 열이 색인화되지 않더라도 조항은 모두 가장 느립니다.

위 명령 줄을 다음과 같이 사용했습니다. 업데이트 테이블 이름 세트 필드 = 대체 (필드, '및', '및'); 목적은 교체 및 ( "A"가 소문자 여야한다)였습니다. 문제는 데이터베이스에서 "및" "를 찾을 수 없지만"%와%"처럼 사용하면 단어의 일부 또는 이미 소문자 인 다른 많은 것들과 함께 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top