■ 문자열 데이터 타입에 대한 비교 연산

DECLARE @ApplyVersion NVARCHAR(50);
DECLARE @Version NVARCHAR(50);

SET @ApplyVersion='2011071203';
SET @Version='3';

IF @ApplyVersion > @Version
BEGIN
    ...
END

문자열 타입을 대상으로 비교 연산자 > 를 사용할 때 어떻게 비교할까?
프로그래밍 언어와 다르게 DB 조건문에서는 뭔가 다른 동작을 할까?
예상대로 프로그래밍 언어의 문자열 비교와 마찬가지로 문자열의 첫음부터 알파벳 순서대로 비교를 한다.
위 예에서는 @Version 이 큰 값으로 판단한다.

하지만 문자열을 조건문에 사용할 때 중요한건 ANSI_NULLS 데이터베이스 옵션


■ ANSI_NULLS

MSDN : SET ANSI_NULLS (Transact-SQL)

SET ANSI_NULLS ON 으로 설정 할 경우, NULL값을 포함할 수 있는 비교 동작은 UNKNOWN (결과값이 없다.)
SET ANSI_NULLS OFF 으로 설정 할 경우, NULL값을 포함할 수 있는 비교 동작은 예상대로 동작한다.
하지만 특별한 경우가 아니고서는 식에  NULL 값을 포함할 수 있는 비교에는 ANSI_NULLS 설정에 영향을 받지 않는
IS NULL, IS NOT NULL 을 사용하는게 유용할 것 같다.

Posted by six605
,