use*_*619 32 oracle ternary-operator iif
我在编写IIF stamtement,table和下面给出的声明时遇到错误,
声明:
SELECT IIF(EMP_ID=1,'True','False') from Employee;
Run Code Online (Sandbox Code Playgroud)
错误:00907-错过了正确的parantheses
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)
)
Run Code Online (Sandbox Code Playgroud)
请提供您的意见.
Mt.*_*ers 59
Oracle不提供此类IIF功能.相反,请尝试使用以下替代方法之一:
SELECT DECODE(EMP_ID, 1, 'True', 'False') from Employee
Run Code Online (Sandbox Code Playgroud)
案例功能:
SELECT CASE WHEN EMP_ID = 1 THEN 'True' ELSE 'False' END from Employee
Run Code Online (Sandbox Code Playgroud)
Rob*_*ijk 17
另外两种选择:
的组合NULLIF
和NVL2
.如果你只能用这个emp_id
就是NOT NULL
,它是你的情况:
select nvl2(nullif(emp_id,1),'False','True') from employee;
Run Code Online (Sandbox Code Playgroud)简单的CASE
表达(施奈德山使用了所谓的搜索CASE
表达式)
select case emp_id when 1 then 'True' else 'False' end from employee;
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
85932 次 |
最近记录: |