favicon Jay Lee DevLog

728x90
300x250

요즘 쿼리 만드는 작업을 안한지 오래돼서

특정 데이터를 치환해서 뷰를 만들어야 하는데 생각이 안났다..

 

그래서 찾아보고, 해결하긴 했다.

또 까먹으면 바로 찾아서 볼 수 있도록 해당 내용을 글로 남겨두려 한다.

 


1. 단일 치환(replace)

replace는 여러 언어에서 대부분 비슷한 형태로 사용되기 때문에,

다들 잘 알 거라고 생각한다.

REPLACE('컬럼', '기존문자열', '변경문자열') select replace(node, 'AB', 'CD') as nodeinfo from node;

: node 테이블에 있는 node 컬럼에 AB 문자열을 CD로 바꾼후 nodeinfo 컬럼으로 만들어서 보여준다.

 

2. 다중 치환(case) 

오늘의 핵심은 이거다.

replace는 다중 치환을 하려면 여러번 내용을 반복하거나, 괄호안에 또 replace를 쓰거나 해야한다.

그래서 가독성이 엄청 떨어진다.

예를 들면 replace(replace(node, 'A', 'B'), 'B', 'C')

뭐 이런식이다.

그럴때 case를 쓰면 굉장히 편하게 치환할 수 있다.

사용법은 switch case문과 비슷하다.

CASE

    WHEN 조건1 THEN 조건1 충족할 때 반환되는 값 

    WHEN 조건2 THEN 조건2 충족할 때 반환되는 값

    WHEN 조건3 THEN 조건3 충족할 때 반환되는 값

ELSE 모든 조건 해당되지 않을 때 반환되는 값 END

 

이런식이다. 많이 보던 문법이라 when과 then만 기억하면 사용하는덴 문제 없을 거다.

예시를 보면,

select node,

(case

    when name = '123' then '234'

    when name = '456' then '678'

    else '123'

end) as nodeinfo

from node;

node 테이블에 node값과 name값을 보여줄건데,

name값은 123이면 234로 치환,

456이면 678로 치환하고,

나머지는 123으로 치환해서 nodeinfo 컬럼으로 만들어라.

 

이런식으로 사용하면 된다.

괜히 replace로 고생하지 말고, case 문으로 다중치환을 쉽게 해결하자.

 

 

 

728x90
반응형

'DB > mysql' 카테고리의 다른 글

DDL(Data Define Language)  (0) 2023.09.01
Rocky 8.6 linux에 mysql 설치하기  (0) 2023.08.28

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.