switch sentencia funcion oracle ternary-operator iif

sentencia - select iif oracle



DeclaraciĆ³n de ORACLE IIF (3)

Recibo un error al escribir la declaración de IIF, la tabla y la declaración que figura a continuación

Declaración:

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

Error: 00907-faltan paréntesis derechos

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

Por favor, proporcione sus entradas.


En PL / SQL, hay un truco para usar la función OWA_UTIL.ITE no 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 no proporciona tal función IIF. En su lugar, intente usar una de las siguientes alternativas:

DECODE Funciton :

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

Función CASE :

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


Otras dos alternativas:

  1. una combinación de NULLIF y NVL2 . Solo puede usar esto si emp_id NOT NULL es NOT NULL , que es en su caso:

    select nvl2(nullif(emp_id,1),''False'',''True'') from employee;

  2. expresión CASE simple (Mt. Schneiders utilizó una expresión CASE buscada)

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