I get an error while writing the IIF statement, table and the statement given below.
Statement:
SELECT IIF(EMP_ID=1,\'True\',\'False\') from Employee;
In PL/SQL, there is a trick to use the undocumented OWA_UTIL.ITE
function.
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.
Two other alternatives:
a combination of NULLIF and NVL2. You can only use this if emp_id
is NOT NULL
, which it is in your case:
select nvl2(nullif(emp_id,1),'False','True') from employee;
simple CASE expression (Mt. Schneiders used a so-called searched CASE
expression)
select case emp_id when 1 then 'True' else 'False' end from employee;
Oracle doesn't provide such IIF Function. Instead, try using one of the following alternatives:
DECODE Function:
SELECT DECODE(EMP_ID, 1, 'True', 'False') from Employee
CASE Function:
SELECT CASE WHEN EMP_ID = 1 THEN 'True' ELSE 'False' END from Employee