【问题标题】:Select statement And If/else statementSelect 语句和 If/else 语句
【发布时间】:2014-02-15 00:58:01
【问题描述】:

对不起,我是 PL/SQL toad for oracle 的新手。我有一个简单的问题。我需要在这个表“JTF_RS_DEFRESOURCES_VL”中找到一些列名,我用这个脚本来做。只是一个示例列。

SELECT column1, 
       column2, 
       column3, 
       column4, 
       column5, 
       end_date_active 
FROM   jtf_rs_defresources_vl 

然后我想使用“if else 语句”,如果 END_DATE_ACTIVE = null 则它是活动的,否则它是非活动的。

【问题讨论】:

标签: sql oracle null case


【解决方案1】:
select case end_date_active 

   when is null then 'ACTIVE',

   else 'INACTIVE'

   end as 'STATUS'

来自 jtf_rs_defresources_vl ;

【讨论】:

  • 您应该制定自己的答案,而不是发布一个无法解释的答案。
【解决方案2】:

您可以使用 @Justin 建议的 CASE 表达式,但在 Oracle 中有一个更简单的函数 - NVL2。它接收三个参数并评估第一个参数。如果不是null,则返回第二个参数,如果是,则返回第三个。

所以在你的情况下:

SELECT NVL2(end_date_active, 'Active', 'Inactive') AS status,
       <<other columns>>
  FROM jtf_rs_defresources_vl

【讨论】:

    【解决方案3】:

    听起来你想要一个 CASE 语句

    SELECT (CASE WHEN end_date_active IS NULL 
                 THEN 'Active'
                 ELSE 'Inactive'
             END) status,
           <<other columns>>
      FROM jtf_rs_defresources_vl
    

    【讨论】:

    • 非常感谢先生。你能解释一下“case”的用法吗?
    • case 语句将比较一个表达式
    • @DontStopLearning - CASE 是您在 SQL 中实现 IF/THEN 逻辑的方式。 IF 语句在 PL/SQL 中有效,但在 SQL 中无效。