我一直在网上搜索试图找到答案,但我空手而归。我想知道是否有一个函数与nvl
函数相反。像这样:
UPDATE transaction_review
SET "function use if null"(review1,review2) = 'Yellow',
"function use if null"(reason1,reason2) = 'Audit'
WHERE ACCOUNT = '11111111'
基本上,如果已经填充了review1,update
将选择review2。有这样的function
吗?感谢。
答案 0 :(得分:1)
如果我理解正确,请尝试使用 coalesce 功能,如下所示
UPDATE transaction_review
set review1 = coalesce(review1,'Yellow'),
review2 = coalesce(review2,'Audit')
WHERE ACCOUNT = '11111111'
答案 1 :(得分:0)
将逻辑放在case
语句中:
UPDATE transaction_review
set review1 = coalesce(review1,'Yellow'),
review2 = (case when review1 is null then review2 else 'Audit' end)
WHERE ACCOUNT = '11111111'
答案 2 :(得分:0)
如果不使用dynamic SQL
,则无法有条件地选择要更新的列也许尝试使用此处记录的NVL2功能:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions120.htm
它提供了一个很好的IF..THEN..ELSE
语法,可能适合您的要求。
如果您使用上述方法,则必须有两个单独的SET
语句。
答案 3 :(得分:0)
在plSQL中尝试NVL2命令。
NVL2函数接受三个参数。如果第一个参数 value不为null,它将返回第二个参数中的值。如果 第一个参数值为null,它将返回第三个参数。