posts 테이블에 웹사이트의 페이지별 코드를 아래 표처럼 저장했습니다.
사이트의 도메인이 하위 디렉토리로 바뀌어서 코드에서 url을 지정하는 부분을 전부 바꿔주어야합니다.
DB에 담긴 코드 텍스트 중 link_option_url=""에 url이 담깁니다.
link_option_url=""에 /blog 가 포함되어있지 않을 경우, /blog를 맨앞에 포함시키려합니다.
link_option_url="/kangminji_co", link_option_url="/kimkuku" 등을 찾아서 link_option_url="/blog/kangminji_co", link_option_url="/blog/kimkuku" 로 바꾸는 것입니다.
쿼리를 어떻게 날려야 하는지 궁금합니다.. 가능한 것일까요..?
SELECT ID, content FROM `posts`
| ID |
content |
| 1 | ...(여러 잡다한 코드더미).... _module_preset="default" link_option_url="/kangminji_co" global_colors_info="{}" ...(여러 잡다한 코드더미).... link_option_url="/kimkuku_co" ..... |
| 2 | ....... _module_preset="default" link_option_url="/kimsunghyon_co" global_colors_info="{}" ....... link_option_url="/blog/kimmoo_co" ....... |
3
4
5
...
안녕하세요. 아래같이 치환하는 방식은 어떨까요?
select case when content like '%url="/blog%' then content
else replace(content, 'link_option_url="', 'link_option_url="/blob')
end content
from posts;
안녕하세요! 내용에 빼먹은게 있어서 추가했습니다ㅜㅜ 답변 감사드립니다!
-- 1. 갱신 대상 사전 확인 --
SELECT id, content
, REPLACE(REPLACE(content
, 'link_option_url="/' , 'link_option_url="/blog/')
, 'link_option_url="/blog/blog/', 'link_option_url="/blog/') x
FROM posts
WHERE content
!= REPLACE(REPLACE(content
, 'link_option_url="/' , 'link_option_url="/blog/')
, 'link_option_url="/blog/blog/', 'link_option_url="/blog/')
;
-- 2. 갱신 --
UPDATE posts
SET content
= REPLACE(REPLACE(content
, 'link_option_url="/' , 'link_option_url="/blog/')
, 'link_option_url="/blog/blog/', 'link_option_url="/blog/')
WHERE content
!= REPLACE(REPLACE(content
, 'link_option_url="/' , 'link_option_url="/blog/')
, 'link_option_url="/blog/blog/', 'link_option_url="/blog/')
;
많은 도움이 되었습니다! 답변 감사드립니다!!