티스토리 뷰

Computer/Databases

[MSSQL 2005] SET ANSI_NULLS

인생이글케쉬우냐 2009. 9. 14. 11:07

출처 : MS TechNet

http://technet.microsoft.com/ko-kr/library/ms188048.aspx


구문

SET ANSI_NULLS { ON | OFF }

 

SET ANSI_NULLS 옵션이 ON인 경우, WHERE column_name = NULL을 사용하는 SELECT 문은 column_name에 Null 값이 있을 때도 0행을 반환합니다. WHERE column_name <> NULL을 사용하는 SELECT 문은 column_name에 Null이 아닌 값이 있을 때도 0행을 반환합니다.

 

SET ANSI_NULLS 옵션이 OFF면 Equals(=)와 Not Equal(<>) 비교 연산자가 ISO 표준을 따르지 않습니다. WHERE column_name = NULL을 사용하는 SELECT 문은 column_name에 Null 값이 있는 행을 반환합니다. WHERE column_name <> NULL을 사용하는 SELECT 문은 열에 Null이 아닌 값이 있는 행을 반환합니다. 또한 WHERE column_name <> XYZ_value를 사용하는 SELECT 문은 XYZ_value가 아니고 NULL이 아닌 모든 행을 반환합니다.

 

계산 열이나 인덱싱된 뷰에서 인덱스를 만들거나 변경할 때는 SET ANSI_NULLS 옵션도 ON으로 설정해야 합니다. SET ANSI_NULLS 옵션이 OFF면 계산 열 또는 인덱싱된 뷰에 인덱스가 있는 테이블의 CREATE, UPDATE, INSERT 및 DELETE 문이 실패합니다. SQL Server는 필요한 값을 위반하는 모든 SET 옵션이 나열된 오류를 반환합니다. 뿐만 아니라 SELECT 문 실행 시 SET ANSI_NULLS 옵션이 OFF면 SQL Server는 계산 열이나 뷰의 인덱스 값을 무시하고 테이블이나 뷰에 이러한 인덱스가 없는 것처럼 SELECT 작업을 처리합니다.

 

-------------------------------------------------------------------

 

DB생성시나 프로시저 작성 전에 꼭 선언해 주도록 하자.

계산된 열 또는 인덱스된 뷰에서 인덱스를 만들거나 변경할 때도 필수~

 

Example >>

원본 테이블

 

ANSI_NULLS ON 설정시 (0 행을 반환)

select * from test where col2=null

 

ANSI_NULLS OFF 설정시 (Null행을 반환)

select * from test where col2=null

 

===========================================================

서버사이드 지오펜스를 크론으로 만들기 위해서
기존에 있던 테이블과 유사한 신규 테이블 생성이 필요해져서
그 기존 테이블을 스크립트 뽑아보니

SET ANSI_NULLS ON
GO

이런게 포함되어있었다.

안시코드에 빈값 허용인가? 라는식으로 내맘대로 추리해보다가

언제나 고마우신 네이버씨와 대화를 했다.


디비의 세계는 언제나 신비로와~

반응형