DB/MYSQL

Insert 할 때 value 조건문 걸기

MAKGA 2021. 10. 5. 22:41
320x100

가끔 insert나 select 등 값에 조건을 걸어 다른 값으로 표현하거나 삽입하고 싶은 경우가 있다.

 

나 같은 경우엔 테이블에 nullable한 datetime 컬럼이 있고 파라미터로 unix 시간을 받는데,

파라미터 값이 0인 경우엔 datetime에 NULL을 넣고, 0이 아니면 datetime으로 변환한 값을 넣고 싶었다.

 

CASE ~ WHEN을 쓰는 방법과 IF를 쓰는 방법 2가지가 있다.

 

CREATE PROCEDURE `sp`
(
    IN _start_time BIGINT
)

BEGIN
    -- 1. CASE~WHEN
    INSERT INTO (start_date) VALUES ((CASE WHEN _start_time = 0 THEN NULL ELSE FROM_UNIXTIME(_start_time))
    -- 2. IF
    INSERT INTO (start_date) VALUES (IF(_start_time = 0, NULL, FROM_UNIXTIME(_start_time)))
END
320x100