MS-SQL 에서 GROUP BY 등으로 집계연산시에 NULL 값이 있으면,
CASE 절로 예외처리 해줘도
경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다.
와 같은 메세지가 나타난다. 이 메세지가 나타날때는 웹페이지에서 데이터로드시에는
오류가 발생하기도 한다.
이에 SELECT 절 실행전에 아래 키워드를 넣어준다.
SET ANSI_WARNINGS
MS-SQL 도움말 참조.
SET ANSI_WARNINGS는 다음 조건에 적용됩니다. sp_configure의 user options를 사용하여 서버의 모든 연결에 대해 ANSI_WARNINGS의 기본값을
설정할 수 있습니다. 자세한 내용은 계산 열이나 인덱싱된 뷰에서 인덱스를 만들거나 조작할 때는 SET ANSI_WARNINGS 옵션을 ON으로 설정해야
합니다. SET ANSI_WARNINGS 옵션이 OFF이면 인덱싱된 뷰나 계산 열에 인덱스가 있는 테이블에서 CREATE, UPDATE,
INSERT, DELETE 문이 실패합니다. 인덱싱된 뷰 및 계산 열의 인덱스에 사용되는 필수 SET 옵션 설정 방법은 SQL Server에는 ANSI_WARNINGS 데이터베이스 옵션이 포함되어 있습니다. 이 옵션은 SET
ANSI_WARNINGS와 같습니다. SET ANSI_WARNINGS 옵션이 ON이면, 0으로 나누기나 데이터베이스 열에 대해 너무 큰
문자열에서 오류나 경고가 발생하고, 기타 유사한 오류가 발생합니다. SET ANSI_WARNINGS 옵션이 OFF이면 이러한 오류나 경고가
발생하지 않습니다. model 데이터베이스에서 SET ANSI_WARNINGS의 기본값은 OFF입니다. 이 옵션을 지정하지 않으면
ANSI_WARNINGS 설정이 적용됩니다. SET ANSI_WARNINGS를 OFF로 설정하면 SQL Server가 분산 쿼리를 실행할 때는 ANSI_WARNINGS를 ON으로 설정해야 합니다. SQL Server Native Client ODBC 드라이버와 SQL Server용 SQL Server Native
Client OLE DB 공급자는 연결될 때 자동으로 ANSI_WARNINGS를 ON으로 설정합니다. ODBC 데이터 원본과 ODBC 연결 특성
또는 SQL Server에 연결하기 전에 응용 프로그램에 설정된 OLE DB 연결 속성에서 이 옵션을 구성할 수 있습니다. DB-Library
응용 프로그램으로부터 연결할 때 SET ANSI_WARNINGS의 기본값은 OFF입니다. SET ANSI_DEFAULTS 옵션이 ON이면 SET ANSI_WARNINGS 옵션이 설정됩니다. SET ANSI_WARNINGS 옵션은 실행 시 또는 런타임에 설정되며 구문 분석 시에는 설정되지 않습니다. SET ARITHABORT 옵션이나 SET ARITHIGNORE 옵션 중 하나가 OFF이고 SET ANSI_WARNINGS
옵션이 ON이면 SQL Server에서 0으로 나누기 또는 오버플로 오류가 발생할 경우 여전히 오류 메시지를
반환합니다.
참고:
binary 또는 varbinary 데이터로 또는 그 역으로의 변환에서 잘림이 일어날 때는 SET 옵션에
상관없이 경고나 오류가 생성되지 않습니다.
참고:
저장 프로시저 또는 사용자 정의 함수에 매개 변수를 전달할 때 또는 일괄 처리 문에서 변수를 선언하고 설정할 때
ANSI_WARNINGS는 인식되지 않습니다. 예를 들어 변수가 char(3)로 정의된 경우 3자보다 큰 값으로 설정하면 정의된
크기로 데이터가 잘리고 INSERT 또는 UPDATE 문이 성공합니다.
'DataBase > MS-SQL' 카테고리의 다른 글
MS-SQL 임시테이블 (0) | 2012.09.19 |
---|---|
연결된 서버(Linked Server) 를 이용한 조건별 다수 업데이트 (0) | 2012.07.02 |
MS-SQL 2008 에서 IDENTITY 경고 풀기 (0) | 2012.03.06 |
MS-SQL 페이징 기법 종류 (1) | 2012.02.09 |
MS-SQL 페이징 쿼리 종류별 성능 비교 (0) | 2012.02.09 |
댓글