1

我一直在互联网上寻找答案,但我空手而归。我想知道是否有一个功能与该nvl功能相反。像这样的东西:

UPDATE transaction_review
   SET "function use if null"(review1,review2) = 'Yellow',
       "function use if null"(reason1,reason2) = 'Audit'
 WHERE ACCOUNT = '11111111'

本质上,update如果 review1 已经填充,则将选择 review2。有没有function这样的?谢谢。

4

4 回答 4

2

在 plSQL 中尝试 NVL2 命令。

NVL2 函数接受三个参数。如果第一个参数值不为空,则返回第二个参数中的值。如果第一个参数值为空,则返回第三个参数。

于 2019-02-07T05:08:56.440 回答
1

如果我理解正确,请尝试使用下面的合并功能

UPDATE transaction_review
set review1 = coalesce(review1,'Yellow'),
    review2 = coalesce(review2,'Audit')
WHERE ACCOUNT = '11111111'
于 2013-09-13T16:35:38.163 回答
0

将逻辑放在case语句中:

UPDATE transaction_review
set review1 = coalesce(review1,'Yellow'),
    review2 = (case when review1 is null then review2 else 'Audit' end)
WHERE ACCOUNT = '11111111'
于 2013-09-13T16:41:33.730 回答
0

在不使用动态 SQL的情况下,无法有条件地选择要更新的列

也许尝试使用此处记录的 NVL2 功能:http: //docs.oracle.com/cd/E11882_01/server.112/e26088/functions120.htm

它提供了一个很好的IF..THEN..ELSE语法,可能适合您的要求。

SET如果您使用上述方法,则必须有两个单独的语句。

于 2013-09-13T16:52:33.807 回答