ORACLE IIF声明(ORACLE IIF Statement)

2019-07-19 16:16发布

我得到一个错误,而写下面给出的IIF stamtement,表和声明,

声明:

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

错误:00907,缺少右括号

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)
)

请提供您的投入。

Answer 1:

Oracle不提供这样的功能IIF。 相反,尝试使用下面的选项之一:

解码功能 :

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

CASE功能 :

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


Answer 2:

其他两种选择:

  1. 的组合NULLIFNVL2 。 如果您只能使用此emp_idNOT NULL ,它是你的情况:

     select nvl2(nullif(emp_id,1),'False','True') from employee; 
  2. 简单CASE表达式 (山SCHNEIDERS使用的所谓的搜索CASE表达)

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


Answer 3:

在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.


文章来源: ORACLE IIF Statement