使用if语句的Oracle数据库查询

时间:2018-07-02 08:10:07

标签: sql oracle case

我对此查询有疑问。

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 个答案:

答案 0 :(得分:0)

您可以使用函数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;