48

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-右括弧の欠落

入力してください。

4

3 に答える 3

75

OracleはそのようなIIF関数を提供していません。代わりに、次のいずれかの方法を使用してみてください。

DECODE関数

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

CASE関数

SELECT CASE WHEN EMP_ID = 1 THEN 'True' ELSE 'False' END from Employee
于 2013-02-09T21:31:44.893 に答える
23

他の 2 つの選択肢:

  1. NULLIFとの組み合わせNVL2emp_idこれはである場合にのみ使用できますNOT NULL。これはあなたの場合です:

    select nvl2(nullif(emp_id,1),'False','True') from employee;
    
  2. 単純なCASE表現(Mt. Schneiders はいわゆる検索CASE表現を使用)

    select case emp_id when 1 then 'True' else 'False' end from employee;
    
于 2013-02-10T08:40:07.843 に答える