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:
SELECT DECODE(EMP_ID, 1, ''True'', ''False'') from Employee
SELECT CASE WHEN EMP_ID = 1 THEN ''True'' ELSE ''False'' END from Employee
Otras dos alternativas:
una combinación de
NULLIF
yNVL2
. Solo puede usar esto siemp_id
NOT NULL
esNOT NULL
, que es en su caso:select nvl2(nullif(emp_id,1),''False'',''True'') from employee;
expresión
CASE
simple (Mt. Schneiders utilizó una expresiónCASE
buscada)select case emp_id when 1 then ''True'' else ''False'' end from employee;