programing

ORACLE IIF 스테이트먼트

telebox 2023. 3. 13. 20:22
반응형

ORACLE IIF 스테이트먼트

IIF 명세서, 표, 아래 명세서 작성 중 오류가 발생하였습니다.

스테이트먼트:

SELECT IIF(EMP_ID=1,'True','False') from Employee;

표:

CREATE TABLE SCOTT.EMPLOYEE
(
   EMP_ID       INTEGER                          NOT NULL,
   EMP_FNAME    VARCHAR2(30 BYTE)                NOT NULL,
   EMP_LNAME    VARCHAR2(30 BYTE)                NOT NULL,
   EMP_ADDRESS  VARCHAR2(50 BYTE)                NOT NULL,
   EMP_PHONE    CHAR(10 BYTE)                    NOT NULL,
   EMP_GENDER   CHAR(1 BYTE)
)

오류:

00907-199 우측 파라치

입력 내용을 입력해 주세요.

Oracle은 이러한 IIF 기능을 제공하지 않습니다.대신 다음 중 하나를 사용해 보십시오.

DECORD 기능

SELECT DECODE(EMP_ID, 1, 'True', 'False') from Employee

케이스 기능:

SELECT CASE WHEN EMP_ID = 1 THEN 'True' ELSE 'False' END from Employee

다른 두 가지 대안:

  1. 와의 조합입니다.이것은, 다음의 경우에 한해 사용할 수 있습니다.emp_idNOT NULL고객님의 경우:

    select nvl2(nullif(emp_id,1),'False','True') from employee;
    
  2. 단순한 표현(슈나이더 산은 이른바 검색어를 사용했다)CASE표현)

    select case emp_id when 1 then 'True' else 'False' end from employee;
    

PL/SQL에는 문서화되어 있지 않은 것을 사용하는 트릭이 있습니다.OWA_UTIL.ITE기능.

SET SERVEROUTPUT ON

DECLARE
    x   VARCHAR2(10);
BEGIN
    x := owa_util.ite('a' = 'b','T','F');
    dbms_output.put_line(x);
END;
/

F

PL/SQL procedure successfully completed.

언급URL : https://stackoverflow.com/questions/14791684/oracle-iif-statement

반응형