어떤 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와 함께 찾을 수 있다는 것입니다.