[SQL] 왜 이런 식으로 널 행동은 SQL 날짜 변수를 비교합니까?
SQL왜 이런 식으로 널 행동은 SQL 날짜 변수를 비교합니까?
난 그냥 SQL에서 쓰고있는 절차와 흥미로운 문제를 건너 왔어요.
내 PROC에서 내가 선택 PARAMS이 NULL이 기본값이 날짜를 가지고, 나는이 PARAMS가 null없는 내 PROC의 일부를 실행하지 않을 경우가 null의 경우 다음 시저의 추가 부분은 무시되어 있는지 확인하고 싶습니다.
나는 상당히 기본적인 IF (@dateVariable <> NULL AND @ DateVariable2 <> NULL) 문을했다,하지만 if 문은 변수가 null가 아닌 경우에도, 나는 SQL 인 NULL에 날짜를 비교하는 데 어려움을 겪고 있다고 가정하지 않을 것이다 작품 결코 날짜 이후 이상은 널 (NULL)입니다.
이 난을 해결하기 위해 단지 IF는 (DateVariable가 NULL이) 제대로 작동하는했다. 또한 이는 또한 올바르게 작동 ( ''<이>) '', ISNULL (@DateVariable) IF 시도
내 질문은 왜 첫 번째 IF하지 작업을 수행하지만, 두 번째와 세 번째 어떤 점에서 모두 필수가 null로 변수의 내용을 비교하기 때문에 모두가 할 경우?
예:
----- 실패 -----
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (@Date <> NULL)
BEGIN
print('a')
END
----- 작품 -----
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (ISNULL(@Date,'') <> '')
BEGIN
print('a')
END
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (@Date IS NOT NULL)
BEGIN
print('a')
END
해결법
-
==============================
1.간단히 말해 'NULL'은 'NULL'동일하지 않습니다. 'NULL'은 불확실한되는 한 가지가 반드시 또한 불확실하다 다른 동일한 일을하지 않는 불확실성의 상태와 비교합니다. 널 (null)에 대한 테스트 할 때 사용은 'ISNULL ()', 또는 'COALESCE ()' 'NULL IS'. '오프'로 ANSI_NULLS 설정하면이 동작을 변경할 수 있지만 그것은 ANSI SQL 표준을하지 않습니다 수 있습니다. 추가 정보를 원하시면 http://msdn.microsoft.com/en-us/library/ms191270.aspx를 참조하십시오.
간단히 말해 'NULL'은 'NULL'동일하지 않습니다. 'NULL'은 불확실한되는 한 가지가 반드시 또한 불확실하다 다른 동일한 일을하지 않는 불확실성의 상태와 비교합니다. 널 (null)에 대한 테스트 할 때 사용은 'ISNULL ()', 또는 'COALESCE ()' 'NULL IS'. '오프'로 ANSI_NULLS 설정하면이 동작을 변경할 수 있지만 그것은 ANSI SQL 표준을하지 않습니다 수 있습니다. 추가 정보를 원하시면 http://msdn.microsoft.com/en-us/library/ms191270.aspx를 참조하십시오.
-
==============================
2.NULL 비교 검색 조건을 참조하십시오
NULL 비교 검색 조건을 참조하십시오
from https://stackoverflow.com/questions/9004570/why-does-comparing-a-sql-date-variable-to-null-behave-in-this-way by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 하나 INSERT 명령과 복수의 열을 삽입 (0) | 2020.07.17 |
---|---|
[SQL] 엔티티 프레임 워크와 타임 스탬프 열을 기준으로 선택의 새로운 기록 (0) | 2020.07.17 |
[SQL] 어떻게 워드 VBA SQL 쿼리에 따옴표를 다루는? (0) | 2020.07.16 |
[SQL] SQL 그룹에 의해 분 (MySQL의) (0) | 2020.07.16 |
[SQL] 열은 IN 절에 존재하지 않지만 SQL 실행 (0) | 2020.07.16 |