1. ISNULL
1) 해당 값이 NULL일 시 함수의 다른 값으로 치환하는 함수
2) Syntax
ISNULL ( check_expression , replacement_value )
3) Example
DECLARE @A INT = NULL
DECLARE @B INT = 100
SELECT @A AS NOT_ISNULL
, ISNULL(@A,1) AS ISNULL_VALUE
, ISNULL(@A,@B) AS ISNULL_VARIABLES
2. COALESCE
1) 해당 값들 중 첫 번째로 NULL이 아닌 값을 출력하는 함수
2) ISNULL의 변수로 치환 내용과 비슷하게 사용가능하나 NULL일 가능성이 있는 여러 변수를 사용하여 처리하는 부분이 CASE문과 비슷하게 작동을 한다.
3) Syntax
COALESCE ( expression [ ,...n ] )
4) Example
DECLARE @A INT = NULL
DECLARE @B INT = NULL
DECLARE @C INT = 10
DECLARE @D INT = 100
SELECT COALESCE(@A,@B,@C) AS COALESCE_THIRD
, COALESCE(@A,@D,@B) AS COALESCE_SECOND
3. CASE
1) 가장 많이 쓰이는 조건문으로 쓰인다.
2) 2가지 방식으로 사용이 가능하고 해당 구문을 통해 NULL 체크도 매우 쉽게 가능하다.
3) Syntax
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
4) Example
DECLARE @A INT = NULL
DECLARE @B INT = 1
DECLARE @C INT = 100
DECLARE @D INT = 999
SELECT
CASE @A
WHEN NULL THEN @B
ELSE @C
END AS NULL_CHECK,
CASE
WHEN @A IS NULL THEN @B
ELSE @C
END AS NULL_CHECK2,
CASE @B
WHEN 1 THEN @D
ELSE @C
END AS VALUE_CHECK
input_expression 사용하는 Syntax 이용하여 NULL 을 구분할 시 NULL_CHECK 컬럼의 결과와 같이 ELSE 구문으로 해당 구문으로 넘어가는 것을 확인할 수 있다.
해당 내용은 다음과 같은 결과라고 할 수 있다.
CREATE TABLE #TMP (A INT, B INT)
GO
INSERT #TMP VALUES (1,NULL)
GO
SELECT * FROM #TMP
해당 데이터를 가진 테이블이 있다.
아래와 같이 쿼리를 실행해보고 그 결과를 비교하면 다음과 같다.
SELECT * FROM #TMP WHERE B = NULL
SELECT * FROM #TMP WHERE B IS NULL
즉, NULL 은 등호로 값이 구분될 수 없다.
4. NULLIF
1) 함수 내 지정된 두 값이 같을 때 NULL을 반환하는 함수
2) 다른 내장 함수와 혼용하면 CASE문과 같은 조건문으로 활용 가능하다.
3) Syntax
NULLIF ( expression , expression )
4) Example
DECLARE @A INT = -100
SELECT NULLIF(@A,-1) AS VALUE_CHK
, NULLIF(@A,-100) AS VALUE_CHK2
, SIGN(@A) AS SIGH_CHK
, NULLIF(SIGN(@A),1) AS CHK1
, NULLIF(SIGN(@A),-1) AS CHK2
, ISNULL(NULLIF(SIGN(@A),-1),0) AS VALUE_REPLACE
'Database > SQL Server' 카테고리의 다른 글
window function(순위, 순서, 분산) (0) | 2021.08.17 |
---|---|
Visual code on SQL server (0) | 2021.07.02 |
SQL Server 물리적 행 함수(RID 조회) (0) | 2021.05.03 |
통계와 동기, 비동기 처리 특징 (0) | 2021.04.29 |
형 변환과 Callate (0) | 2021.04.29 |
최근댓글