내 선택 문에서 필드 중 하나로서이를 반환 빈 문자열, 나는 여전히 일부 레코드에 대해 NULL을 다시 얻고있다. 그것들을 빈 문자열로 대체하는 것이 아니며 이유를 알지 못합니다.ISNULL은 여전히 널 (NULL)이
0
A
답변
1
행을 찾을 수없는 경우 subselect가 실제로 NULL을 리턴하는 것을 알 수 있습니다. where
절 화재 TagNames
이 NULL입니다 행이 TagNames_CTE
에서 발견되는 경우
, 그것은 는 함수에 의해 ''
로 변환 얻을 것이다.
그러나 더 행이 전혀 발견되지 않는 경우 NULL이며, 전체 부속 선택의 결과 (그것의 마술을 작동하려면 행이 없기 때문에)는 를 반환하기 때문에 함수가 호출되지 않습니다 외부 선택을 위해 그 열에 뭔가.
select 1,
(select isnull (null,2) from dummytable where 1 = 0)
from dummytable
:의 라인을 따라 몇 가지 간단한 쿼리를 시도 -
확인하는 쉬운 방법은 그 자체 (ISNULL()
하지 않고) 하위 쿼리를 실행하고 모든 NULL
을 포함하는 행 또는 어떤 행을 반환하는지 확인하는 것입니다
과 :
select 1,
(select isnull (null,2) from dummytable where 1 = 1)
from dummytable
당신은 아마 후자는 당신에게 1,2
를 제공하는 동안 전 당신에게 1, null
을주는 것을 확인할 수 있습니다. 다음과 같은 진술로 MySQL에서 테스트 한 결과, 이것이 맞을 가능성이 있음을 알 수 있습니다.
> create table xyzzy (plugh integer);
> insert into xyzzy values (42):
> select 1,(select ifnull (null, 2) from xyzzy where 1 = 0) from xyzzy;
1 NULL
> select 1,(select ifnull (null, 2) from xyzzy where 1 = 1) from xyzzy;
1 2
1
서브 쿼리 안에, ISNULL
이 실제로 행에 존재하는 NULL
에 영향을 미칠 수 있기 때문에.
select
...some fields
ISNULL((select TagNames from TagNames_CTE as tagNames
where Content.ID = tagNames.EntryID), '') as tags
from SomeTable
때문에 서브 쿼리의 외부로 이동 : 나는 당신이 실제로 하위 쿼리 반환하지 행의 경우에 대처하기 위해 필요한 가정합니다. (나는 또한 보통 COALESCE
을 ISNULL
이상으로 권장하고있다. 이것은 표준 SQL이며, 여러 매개 변수를 지원하고 강제 형 변환이 가능하다.)
관련 문제
- 1. 길 null이 있으면 ISNULL은 열을 표시하지 않습니까?
- 2. null이 아닌 캠프 널
- 3. ISNULL은 문자열
- 4. 널 예외 NULL이 <int>
- 5. null이 아니지만 여전히 null 포인터 예외가 발생합니다.
- 6. 개체가 null이 아니고 예외가 여전히 발생했습니다
- 7. 뭐죠 Object.Equals의 차이 (널 (null), OBJ) 및 OBJ == null이
- 8. 널 포인터 예외가있는 이유는 무엇입니까? null이 없다는 것을 확인했습니다.
- 9. SSRS 다중 선택 매개 변수, 모두 널 및 null이 아님
- 10. Mockito & Junit 널 포인터 예외 : 이름은 null이 아니어야합니다.
- 11. null이 개체입니까?
- 12. 개체가 null이 아니고 null이 아닌 방법은 무엇입니까?
- 13. 널 정수
- 14. 널 조각의 널 포인터
- 15. MYSQL 오류 및 null이 아닌 여전히 mysql에 데이터 추가
- 16. 널 반환
- 17. Groovy null이 0보다 작습니까?
- 18. C++ rapidjson : GenericValue :: IsNull은 어떤 경우에도 false를 반환합니다.
- 19. = null이
- 20. 사용자 정의 제약 검증과 널
- 21. 널 열
- 22. 이 널 매개 변수
- 23. 쿼리가 항상 널 커서를 반환합니까?
- 24. 널
- 25. 널
- 26. 널
- 27. 널
- 28. 널
- 29. - 널
- 30. /널
hmmm 사람은 거품이 날아 오르고 마지막 ISNULL이 이것을 처리했다고 생각할 것이다. 캐치 올? – PositiveGuy
@ 커피, 아니, 나는 그렇게 생각하지 않는다. 'ISNULL'은 한 레벨에서 실제'선택 '이다. – paxdiablo