sql 쿼리 문법

00_8_3·2021년 6월 5일
0

sql 문법

IF, Case

IF

형식
if ( 어떤값1, "표시1", "표시2")
어떤값1이 true면 표시1 출력 아니면 표시2 출력

SELECT user_id, if ( ifnull(username), "-", username)
FROM User;

유저 테이블에서 유저아이디와 유저네임이 null값이면 "-" 출력 아니면 username 출력

Case

형식
case
when 값1 then 표시값1
when 값2 then 표시값2
else 표시값3
end

SELECT USER_ID CASE
WHEN username LIKE "%el%" OR email LIKE "%.com"
THEN "O"
ELSE "X" END AS 인증
FROM User;

유저테이블에서 유저아이디와 인증을 가져오는데
유저이름에 "el"이 들어 가있거나 이메일이 ".com"으로 끝날경우
인증으로 "O" 출력 아니면 "X" 출력한다.

ifnull, isnull, nvl, nvl2

ifnull (mysql에서)

SELECT ifnull(username, "-") FROM User;

유저 테이블에서 유저네임이 null 값이면 "-"출력 아니면 username 출력

isnull (MS SQL)

SELECT isnull(username, "-") FROM User;

유저 테이블에서 유저네임이 null 값이면 "-"출력 아니면 username 출력

nvl (오라클)

SELECT nvl (username, 0 ) FROM User;

유저 테이블에서 유저이름이 null 값이면 0 아니면 유저네임 출력

nvl2 (오라클)

SELECT nvl2 (username, 0 , 1) FROM User;

유저테이블에서 유저이름이 null 값이면 1 있으면 0을 출력

마침

StackFolio 프로젝트에서
대댓글 구현을 할 때
nvl 함수를 사용하려 한적이 있는데
typeORM에서 생쿼리로 nvl 함수로 사용하려하니 인식이 안되어서
Nullish coalescing operator을 사용해서 처리했던 적이있다 ㅋㅋㅋ...

ifnull 기능을 알았으면 조금더 코드가 짧고 간결해지지 않았나 싶다.

0개의 댓글