MSSQL NULL값 변환 NVL, ISNULL, CASE 사용 방법 예제

SQL Server에서 Null 값을 다른 값으로 변화하는 방법이 몇 가지 있습니다.

대표적인 방법으로 ISNULLCASE을 사용합니다.

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과 ”공백은 전혀 다른 값입니다.

자세한 내용을 아래를 참조해주세요.

MSSQL NULL과 공백문자 또는 0의 주의점
MSSQL를 사용하면서 자주 발생하는 버그 중 하나가 NULL과 공백문자에서 발생하게 됩니다. 또는 숫자 0에서도 발생하는 경우도 있습니다. MSSQL에서는 오라클과 다르게 NULL과 공백문자를 따로 취급하기 때문입니다. 오라클에서는 값을 입력하기 않거나 공백문자인 '' 만을 입력했을 경우 NULL로 인식합니다. 하지만 MSSQL에서는 값을 입력하지 않을 경우에는 NULL, 공백문자인 '' 입력한 경우에는 NULL이 아닌 ''로 등록됩니다. 이렇게 NULL과 공백문자인 ''를 따로 취급하기 때문에 SELECT로 데이터를 취득한 후 ...

 

 

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 값과 ”공백을 동시에 체크하는 방법은 아래를 참조해주세요.

MSSQL 공백값과 NULL값 동시에 체크 하는 방법
SQL Server에서는 오라클과 다르게 NULL 값과 공백값을 다르게 취급합니다. 오라클의 경우에는 NULL과 공백값을 같은 값으로 취급하지만, SQL Server의 경우에는 NULL 값은 NULL, 공백은 공백으로 NULL이 아닌 값으로 취급합니다. 공백값과 NULL값 SQL Server 예제를 보도록 하겠습니다. DECLARE @nullTest1 VARCHAR(20); DECLARE @nullTest2 VARCHAR(20) = ''; SELECT ISNULL(@nullTest1,'no data') AS nullTest1 SEL...

 

정리

SQL Server에서 NULL 값을 변환하는 예제를 봤습니다.

변환 방법으로는 ISNULL 함수와 CASE 문을 사용해서 변환했습니다.

데이터를 취득할 때 NULL 값을 다른 문자열이나 값으로 변화하는 경우에 유용하게 사용할 수 있습니다.

댓글