보통 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