将多个列使用NVL – Oracle SQL

早安我心爱的sql向导和巫师,

我想要在3个表中替换3列数据.目前我正在使用NVL功能,但这只限于两列.

参见下面的例子:

SELECT ccc.case_id,NVL (ccvl.descr,ccc.char)) char_val

               FROM case_char ccc,char_value ccvl,lookup_value lval1
              WHERE   
                    ccvl.descr(+) = ccc.value
                    AND ccc.value = lval1.descr (+)
                    AND ccc.case_id IN ('123'))



     case_char table
     case_id|char |value
       123  |email| work_email
       124  |issue| tim_ 



     char_value table
     char  | descr
work_email | complaint mail
    tim_   | timeliness


    lookup_value table
    descr  | descrlong
 work_email| xxx@blah.com

本质上我想要做的是如果存在与lookup_value.descr的case_char.value匹配,然后显示它,如果没有,那么如果存在与case_char.value和char_value.char的匹配然后显示它.

我只是想从char_value表中返回’issue’的描述,但是对于’email’,我想从lookup_value表(全部在同一个别名’char_val’)下返回descrlong.

所以我的问题是,如何实现这一点,记住我希望他们出现在同一个别名下.

如果您需要任何进一步信息,请告知我们.

多谢你们

你可以嵌套NVL:
NVL(a,NVL(b,NVL(c,d))

但更好的是,使用sql-standard COALESCE,它采用多个参数,并且还可用于非Oracle系统:

COALESCE(a,b,c,d)

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...