【问题标题】:Oracle db query with if statement带有 if 语句的 Oracle 数据库查询
【发布时间】: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 - 选项

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

  • 选项
  • 选项

【问题讨论】:

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

标签: sql oracle case


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多