티스토리 뷰

728x90

COALESCE 구문은 인수를 순서대로 체크하여 처음으로 NULL이 아닌 값을 반환한다.

인수는 여러 개가 입력되어도 상관없다.

SELECT COALESCE(1, NULL, NULL, 2)		--1
SELECT COALESCE(NULL, NULL, NULL, 2)	--2
SELECT COALESCE(NULL, 'HI', 'HELLO')	--HI
SELECT COALESCE(NULL, NULL, NULL, NULL)		--ERROR

또, COALESCE 구문은 CASE 구문을 대체할 수 있다.

아래 COALESCE 와 CASE 는 동일한 의미를 가진다.

SELECT BusinessEntityID
	, FirstName
	, Title	
	--TITLE값이 NULL인 경우 'N/A'출력
	, CASE WHEN Title IS NULL THEN 'N/A' ELSE Title END [CASE]
	, COALESCE(Title, 'N/A') [COALESCE]
FROM [AdventureWorks2014].[Person].[Person]

 

CREATE TABLE salaries (
    staff_id INT PRIMARY KEY,
    hourly_rate decimal,
    weekly_rate decimal,
    monthly_rate decimal,
    CHECK(
        hourly_rate IS NOT NULL OR 
        weekly_rate IS NOT NULL OR 
        monthly_rate IS NOT NULL)
);

INSERT INTO salaries
	(	staff_id, 
        hourly_rate, 
        weekly_rate, 
        monthly_rate
    )
VALUES
    (1,20, NULL,NULL),
    (2,30, NULL,NULL),
    (3,NULL, 1000,NULL),
    (4,NULL, NULL,6000),
    (5,NULL, NULL,6500);

SELECT * FROM salaries

SELECT
    staff_id,
    COALESCE(
        hourly_rate*22*8, 
        weekly_rate*4, 
        monthly_rate
    ) monthly_salary
FROM
    salaries;
728x90
LIST
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함