본문 바로가기

MySQL

[MySQL] Replace 함수와 Case 기능 혼합해서 사용 (replace + case)

replace에 대한 상세한 내용은 아래 블로그를 참조

replace(대상컬럼명[혹은 대상문자], 찾는문자, 바꿀문자)

- https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace



select + replace


샘플 쿼리)


SELECT url, REPLACE(url , "foo=가","bar=가")

FROM sample;


----

http://www.sample.com?foo=가&id=2

http://www.sample.com?bar=가&id=2



update + replace + case


샘플 쿼리)


UPDATE sample Set

url = 

CASE 

  WHEN url LIKE '%foo=가%' THEN REPLACE(url , "foo=가","bar=가")

WHEN url LIKE '%foo=나%' THEN REPLACE(url , "foo=나","bar=나")

WHEN url LIKE '%foo=다%' THEN REPLACE(url , "foo=하","bar=하")

  ELSE

      url 

END,

editor = '샘플수정자'


WHERE site = 1 AND reg_date BETWEEN '2017-03-30 20:00:00' AND '2017-03-30 21:00:00';



----


ELSE문의 url이 핵심

- CASE에 맞지 않는 url이 있다면 원본 데이터를 그대로 UPDATE

(물론 조건으로 UPDATE를 원하지 않는 것들을 Filter할 수 있으면 하는게 좋음)