programing

Oracle DECODE의 표준 SQL 대안

subpage 2023. 9. 16. 09:04
반응형

Oracle DECODE의 표준 SQL 대안

오라클의 DECODE 기능과 동등한 ANSI SQL이 있습니까?

오라클의 디코드 기능은 SQL의 IF-THEN-ELSE 구성입니다.

CASE 표현식은 ANSI SQL 메서드이며, 이 중 "simple"과 "searched"의 두 가지 종류가 있습니다.

1) 간단한 CASE 표현:

CASE col WHEN 1 THEN 'One'
         WHEN 2 THEN 'Two'
         ELSE 'More'
         END

2) 검색된 CASE 식:

CASE WHEN col < 0 THEN 'Negative'
     WHEN col = 0 THEN 'Zero'
     ELSE 'Positive'
     END
CASE WHEN a=1 THEN value1
     WHEN a=2 THEN value2
     ELSE default
END

SQL 대소문자 구문?

Oracle DECODE는 null을 null과 동일하게 취급하지만 CASE(및 다른 비교)는 취급하지 않습니다.

예:a와 b가 모두 null이면 디코딩(a,b,1,0)이 1을 반환합니다.

이 두 문장을 실행하여 차이를 확인합니다.

select case null when null then 'Y' else 'N' end dd from dual;
select decode(null, null, 'Y', 'N') dd from dual;

null을 더하면 디코딩에서는 비교할 수 있지만 그렇지 않은 경우에는 비교할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3212059/standard-sql-alternative-to-oracle-decode

반응형