2017-12-26 14 views
0

내가 시도한 :Oracle SQL의 열에 부울 유형이 있습니까?

select 1>2 from dual; 

만 가지고 :

ORA-00923: FROM keyword not found where expected 

오라클 SQL의 열 표현을위한 부울 유형이 있습니까?

내가 할 수 :

select case when 1>2 then 'T' else 'F' end from dual; 

원래 내가 날짜 필드와 나는 차이를 받고 서명을 보이는 것을 발견했다 가장 빠른 방법을 비교하려고 ... 내가 SIGN 기능을 시도

UPDATE , 그것이 특정 공급 업체 확장인지 알 수 없습니다.

select SIGN(1-2) from dual; 
select SIGN(DATE '2017-01-02' - DATE '2017-02-12') from dual; 

그러나이 트릭은 작동하지 않습니다. 또는 ...

+1

아니요, 부울 유형이 없습니다. 'char()'또는 작은 정수를 사용할 수 있습니다. –

+1

1과 0이있는 char (1)이 최선의 방법입니다. – Adam

+0

두 값을 비교 한 결과를 표현할 방법을 찾고 있습니다. 나는 "부울"타입으로 컬럼을 생성하는 것에 관심이 없다. – gavenkoa

답변

3

아니요, 예/아니요와 같이 0과 1을 사용할 수 있습니다. 예를 들어

select case when (any_logical_condition_here) then 1 else 0 end as my_col 
from .... 
where .... 

: 당신이 뭔가가 사실이며 0이 false 인 경우 인 경우 결과 (1)를 얻을 필요가있는 경우

3

, 당신은 case 표현 사용할 수 있습니다

select case when 1 > 2 then 1 else 0 end as bool_result 
from dual; 

          BOOL_RESULT 
--------------------------------------- 
             0 

참고 하지만 "부울"은 정확히 TRUE/FALSE 논리를 나타내며 UNKNOWN에 대한 위치는 없습니다. null을 처리 할 때 SQL에서와 같이 3 진 논리가 필요합니다. 위에 나온대로 case 표현식은 논리 조건이 true이고 그렇지 않은 경우 0 일 때 1을 반환합니다. 1 > null으로 시도해보십시오 - 진리 값은 UNKNOWN이고 case 표현식은 0을 반환합니다.

+0

lore에서 잘 드러나 듯이, Boolean은 실제로 3가입니다 : ['True','False','FileNotFound' (link)] (https://thedailywtf.com/articles/What_Is_Truth_0x3f_) – APC