문자열의 일부를 대체하여 열 값 업데이트


325

MySQL 데이터베이스에 다음 열이있는 테이블이 있습니다.

[id, url]

그리고 URL은 다음과 같습니다

 http://domain1.com/images/img1.jpg

모든 URL을 다른 도메인으로 업데이트하고 싶습니다

 http://domain2.com/otherfolder/img1.jpg

파일 이름을 그대로 유지하십시오.

어떤 쿼리를 실행해야합니까?


답변:



162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

관련 문서 : http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
안녕하세요-왜 어디서 필요합니까?
Guy Cohen

14
@GuyCohen 그렇지 않으면 쿼리가 테이블의 모든 단일 행을 수정하기 때문입니다. 이 WHERE절은 특정 URL로 행만 수정하도록 쿼리를 최적화합니다. 논리적으로 결과는 동일하지만 추가 WHERE하면 작업 속도가 빨라집니다.
Dmytro Shevchenko

3
WHERE만 문자열의 일부를 대체하고 있다는도의 보장하지만 시작 과 함께 http://etc/etc/또는 string_to_be_replaced.예를 들어는 주어진 대답에 http://domain1.com/images/this/is/a/test영향을하지만, 될 수 foobar/http://domain1.com/images/없다.
Kyle Challis


9

WHERE 절의 조건을 준수하는 레코드 (모든 레코드와 대조적으로) 바꾸 려면 WHERE 절이 필요합니다 . % 기호를 사용 하여 부분 문자열을 나타냅니다. IE

LIKE ('...//domain1.com/images/%');

수단 모든 레코드 BEGIN"...//domain1.com/images/"아무것도의 AFTER를합니다 (의 그 %에 대한 ...)

다른 예시:

LIKE ('%http://domain1.com/images/%')

이는 다음을 포함하는 모든 레코드를 의미합니다 "http://domain1.com/images/"

문자열의 어느 부분에서나


7

이 시도...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');

1

먼저 확인해야합니다

university코스 이름이 '% & amp %'인 곳 에서 선택 *

다음으로 업데이트해야합니다

업데이트 대학 설정 course_name = REPLACE (course_name, '& amp', '&') id = 1

결과 : 엔지니어링 및 기술 => 엔지니어링 및 기술

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.