Programming/MS SQL Server
[MS SQL SERVER] COALESCE
hoojiv
2021. 10. 29. 13:20
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