带有 if 语句的 Oracle 数据库查询

Posted

技术标签:

【中文标题】带有 if 语句的 Oracle 数据库查询【英文标题】:Oracle db query with if statement 【发布时间】:2018-07-02 08:10:06 【问题描述】:

我对此查询有疑问。

SELECT 
    codigo clave, descrip valor
    CASE 
       WHEN codigo IS NOT NULL 
          THEN SELECT codigo clave, codigo || ' - ' || descrip valor
       ELSE
          CASE 
             WHEN codigo IS NULL  
                SELECT codigo clave, descrip valor
          END

我需要将code"-" 连接到这样的东西

1 - 选项 2 - 选项

但是,在某些情况下,代码的值是空的,它会这样打印:

选项 选项

【问题讨论】:

您能否发布一些示例数据和所需的结果?这将阐明您的需求并帮助人们帮助您。 你的代码在语法上不正确,所以你的问题真的很难理解。 【参考方案1】:

您可以使用函数NVL2 来构建您的查询。它有三个参数

NVL2(expr1, expr2, expr3)

如果 expr1 不为 NULL,则返回 expr2,如果为 NULL,则返回 expr3。

例如,NVL2(codigo,'codigo-','') 仅在 codigo 不为空时添加“-”。

事情比较复杂,你可以使用CASE 语句,比如这样:

SELECT CASE 
         WHEN codigo IS NOT NULL and descrip IS NOT NULL THEN codigo||'-'||descript
         WHEN codigo IS NOT NULL and descrit IS     NULL THEN codigo
         WHEN codigo IS     NULL ANd descrip IS NOT NULL THEN descrip
         ELSE NULL
       END as myresult
 FROM mytable;

【讨论】:

以上是关于带有 if 语句的 Oracle 数据库查询的主要内容,如果未能解决你的问题,请参考以下文章

oracleif判断语句

带有子查询的 Oracle 更新 - 性能问题

oracle语句的级联问题,这个语句e.mgr=m.empno(+) 谁可以给我讲讲这个是啥意思还带有(+)详细解答哦!

如何在 Oracle SQL Developer 中生成带有子查询的 INSERT 语句?

oracle查询语句中in后面数据较多怎么优化

带有承诺的 MongoDB 查询不执行 if 语句(MongoDB node.js 驱动程序)