필드에서 특정 문자열을 찾고 있는데 새 문자열로 바꾸려고합니다. 특히, 한 URL에 대한 모든 참조가 다른 URL로 변경되기를 원합니다. 이 SQL 문을 작성하고 mysql>
MySQL Community Server 5.1.54를 사용하여 CentOS 5.5 에서 프롬프트 에서 실행하고 있습니다.
update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%');
응답은 다음과 같습니다.
Query OK, 0 rows affected (0.02 sec)
Rows matched: 618 Changed: 0 Warnings: 0
변경 사항이없는 이유를 어떻게 추적 할 수 있습니까?
편집 1 :
Aaron Bertrand 덕분에 REPLACE()
와일드 카드를 처리 할 수없고 완전히 잘못 사용하고 있음을 발견했습니다 (생각 : 누락 WHERE
절). 다음은 제가 개혁 한 진술입니다.
UPDATE [table]
SET [column] =
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
WHERE
[column]
LIKE
'%companydomain.com%';
내가 익숙하고 오래된 것을 받는다.
Query OK, 0 rows affected (0.02 sec)
Rows matched: 167 Changed: 0 Warnings: 0
내가 뭘 잘못하고 있니?
편집 2 :
내가 뭘 잘못했는지 말해 줄게 !! 나는 가정에 의문을 제기하지 않았다. 내 가정 은 내가 교체 한 문자열이 모두 소문자라고 가정했습니다 . WHERE 절은 모든 것을 보았습니다LIKE %companydomain.com%
. 여기에는 CompanyDomain.com, CoMpAnYdOmAiN.com 등과 같은 모든 대문자 치환이 포함됩니다.
그것은 그것을 전달한 REPLACE()
다음 companydomain.com을 엄격히 찾고 companydomain.org로 대체했습니다.
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
물론 내 기록은 반환되었지만 아무것도 교체되지 않았습니다. REPLACE()
대문자를 고려하도록 변경 한 후에 는 모든 레코드가 업데이트되었으며 모든 것이 정상인 것 같습니다. REPLACE()
내 시나리오 의 올바른 구문은 다음과 같습니다.
REPLACE (
[column],
'CompanyDomain.com',
'companydomain.org' )
답변
REPLACE
그런 식으로 와일드 카드를 사용하지 않습니다. 나는 당신이 의미한다고 생각합니다 :
UPDATE [table]
SET [column] = REPLACE([column],'TLD.com','TLD.org')
WHERE [column] LIKE '%TLD.com%';
당신은 더 없다 WHERE
가, 그래서 절을 시도 618 개 행을 업데이트 할 수 있지만, 어떤 경우 찾지 못했습니다 %TLD.com%
해당 열의를. 어떤 행이 영향을 받는지 보려면 SELECT
대신 다음을 실행하십시오 .
SELECT [column], REPLACE([column], 'TLD.com', 'TLD.org') AS new_value
FROM [table]
WHERE [column] LIKE '%TLD.com%';
답변
먼저 select
쿼리를 사용하여 확인해야 합니다.
SELECT * FROM colleges
WHERE course_name LIKE '%&%'
다음으로 업데이트해야합니다.
UPDATE colleges
SET course_name = REPLACE(course_name, '&', '&')
WHERE id = 1
결과 : Cloud & Enterprise Computing
⇒Cloud & Enterprise Computing
마지막으로 다음을 모두 신청해야합니다.
UPDATE colleges
SET course_name = REPLACE(course_name, '&', '&')
결과 : Corporate & Insolvency Law
⇒Corporate & Insolvency Law