본문 바로가기
㏈ª By β┖υΕJini/MS-SQL

MS-SQL ANSI NULL 테스트

by ㏈ª ☞ β┖υΕJini.κR 2010. 11. 10.

사용자 삽입 이미지


보통 ANSI 표준 에 대해서 많이들 이야기 합니다.


그리고 NULL 값을 비교 할때 값이 이상하게 나오는 경우도 보실것입니다. 이런 이유는


ANSI 표준 옵션을 사용했는지 아닌지에따라 달라 지게 됩니다.


-- TEST 테이블생성

 

IF(OBJECT_ID('TBL_TEST') IS NOT NULL)

       DROP TABLE TBL_TEST

GO

 

CREATE TABLE TBL_TEST (A INT NULL)

INSERT INTO TBL_TEST VALUES (NULL)

INSERT INTO TBL_TEST VALUES (0)

INSERT INTO TBL_TEST VALUES (1)

GO

 

PRINT '----  (MS-SQL 기본세팅) ------'

DECLARE @VARNAME INT

SELECT @VARNAME = NULL

SELECT * FROM TBL_TEST WHERE A = @VARNAME 

--NULL

SELECT * FROM TBL_TEST WHERE A <> @VARNAME

--0

--1

SELECT * FROM TBL_TEST WHERE A IS NULL

--NULL

GO

 

-- SET ANSI_NULLS TO ON AND TEST.

PRINT 'TESTING ANSI_NULLS ON'

SET ANSI_NULLS ON

GO

DECLARE @VARNAME INT

SELECT @VARNAME = NULL

SELECT * FROM TBL_TEST WHERE A = @VARNAME

--값없음

SELECT * FROM TBL_TEST WHERE A <> @VARNAME

--값없음

SELECT * FROM TBL_TEST WHERE A IS NULL

--NULL

GO

-- SET ANSI_NULLS TO OFF AND TEST.

PRINT 'TESTING SET ANSI_NULLS OFF'

SET ANSI_NULLS OFF

GO

DECLARE @VARNAME INT

SELECT @VARNAME = NULL

SELECT * FROM TBL_TEST WHERE A = @VARNAME

SELECT * FROM TBL_TEST WHERE A <> @VARNAME

SELECT * FROM TBL_TEST WHERE A IS NULL

GO

-- 테스트테이블삭제

DROP TABLE TBL_TEST

GO