SQL Server에서 Null 값을 다른 값으로 변화하는 방법이 몇 가지 있습니다.
대표적인 방법으로 ISNULL과 CASE을 사용합니다.
SQL Server에는 NVL이 없습니다.
NVL은 오라클에만 있는 함수입니다.
ISNULL 사용 방법
ISNULL(값, 변환 문자)
값 – NULL인지 체크하고 싶은 값.
변환 문자 – 값이 NULL인 경우 변환하고 싶은 문자.
ISNULL 함수에는 두 개의 파라미터를 지정합니다.
첫 번째 파라미터는 값이 NULL 인지 체크하고 싶은 컬럼이나 변수를 지정합니다.
두 번째 파라미터에는 체크한 값이 NULL인 경우 출력할 값을 지정합니다.
ISNULL 예제
DECLARE @nullTest1 VARCHAR(20);
DECLARE @nullTest2 VARCHAR(20) = '';
DECLARE @nullTest3 VARCHAR(20) = ' ';
DECLARE @nullTest4 VARCHAR(20) = 'TEST';
SELECT ISNULL(@nullTest1,'nothing data')
SELECT ISNULL(@nullTest2,'nothing data')
SELECT ISNULL(@nullTest3,'nothing data')
SELECT ISNULL(@nullTest4,'nothing data')
결과
ISNULL 함수에 NULL 인지 체크하고 싶은 변수를 지정했습니다.
지정한 변수가 NULL인 경우에는 nothing data를 출력하도록 설정하였습니다.
첫 번째 변수인 @nullTest1은 변수 선언만 해놓은 상태입니다.
@nullTest1 값은 NULL이기 때문에 nothing data가 출력됩니다.
@nullTest2에는 ”로 공백을, @nullTest3에는 ‘ ‘ 스페이스를 설정해놨습니다.
즉, NULL이 아니기 때문에 변수에 들어있는 값이 출력됩니다.
@nullTest4에도 값이 들어가 있기 때문에 @nullTest4 값이 출력됩니다.
Sql Server에서는 NULL과 ”공백은 전혀 다른 값입니다.
자세한 내용을 아래를 참조해주세요.
CASE 문으로 NULL 체크
이번에는 CASE 문을 사용해서 NULL 체크를 해보겠습니다.
CASE NULL 체크 예제
DECLARE @nullTest1 VARCHAR(20);
DECLARE @nullTest2 VARCHAR(20) = '';
DECLARE @nullTest3 VARCHAR(20) = ' ';
DECLARE @nullTest4 VARCHAR(20) = 'TEST';
SELECT
CASE WHEN @nullTest1 IS NULL
THEN 'nothing data'
ELSE @nullTest1
END Test1
, CASE WHEN @nullTest2 IS NULL
THEN 'nothing data'
ELSE @nullTest2
END Test2
, CASE WHEN @nullTest3 IS NULL
THEN 'nothing data'
ELSE @nullTest3
END Test3
, CASE WHEN @nullTest4 IS NULL
THEN 'nothing data'
ELSE @nullTest4
END Test4
결과
CASE 문에서 NULL을 체크하는 방법은 IS NULL을 사용합니다.
IS NULL을 사용한 경우에도 공백은 NULL로 판정되지 않습니다.
NULL 값과 ”공백을 동시에 체크하는 방법은 아래를 참조해주세요.
정리
SQL Server에서 NULL 값을 변환하는 예제를 봤습니다.
변환 방법으로는 ISNULL 함수와 CASE 문을 사용해서 변환했습니다.
데이터를 취득할 때 NULL 값을 다른 문자열이나 값으로 변화하는 경우에 유용하게 사용할 수 있습니다.
댓글