SQL 쿼리에서 int 또는 null을 부울 값으로 변환하는 가장 좋은 방법은 무엇입니까?
-
05-07-2019 - |
문제
SQL 쿼리에서 int 또는 null을 부울 값으로 변환하는 가장 좋은 방법은 다음과 같습니다.
- 널이 아닌 값은 모든 것입니다 진실 결과에서
- 모든 널 값은입니다 거짓 결과에서
해결책
내가 아는 한 (내가 틀렸다면 나를 바로 잡으십시오), SQL에는 문자 부울 값의 개념이 없습니다. 부울 값을 평가하는 표현식을 가질 수 있지만 출력 할 수는 없습니다.
이것은 비교에서 사용할 수있는 값을 생성 할 때 케이스를 사용할 수 있습니다.
SELECT
CASE WHEN ValueColumn IS NULL THEN 'FALSE' ELSE 'TRUE' END BooleanOutput
FROM
table
다른 팁
용도가 필요하지 않습니다 ...시기 :
select (column_name is not null) as result from table_name;
NULL이 아닌 모든 필드에 대해 1을 반환하고 NULL 인 모든 필드의 경우 0을 반환합니다.
SELECT
CASE
WHEN thevalue IS NULL THEN 0
ELSE 1
END AS newVal
FROM .... (rest of select)
나는 그것이 이런 일이 있다고 생각합니다
실제로, isnull은 값이 널이면 0이면 0이 될 수 있습니다.
결과의 변환 (비트, 값)을 수행 할 수 있습니다. SQL이 값이 부울이 아니라는 오류를 반환하기 때문에.
isnull(column - column + 1, 0) != 0
Oracle에서, 당신이 false의 경우 0을 사용하고 true의 경우 1을 사용한다고 가정하면 :-
SELECT DECODE( col, NULL, 0, 1) FROM ...
Case Syntax를 사용하여 이것을 쓸 수도 있지만 위의 것은 Oracle에서 관용적입니다. 디코드는 스위치/케이스와 비슷합니다. col이 null이면 0이 반환되고, 그렇지 않으면 1.
오라클에 대해 내가 아는 가장 짧은 것 :
SELECT NVL2(nullableColumn, 1, 0) FROM someTable
NVL2(value, ifNotNull, ifNull)
보고 ifNotNull
만약 value
NULL이 아닙니다 ifNull
그렇지 않으면.
일반적으로 1을 사용하는 경우, 그것은 사실이며 다른 경우에는 그렇습니다.
그래서:
SELECT IsDefault = CASE WHEN IsDefault = 1 THEN 'true' ELSE 'false' END
FROM table
제휴하지 않습니다 StackOverflow