如何将此脚本转换为 Oracle

How to convert this script to an Oracle

我必须创建一个可以在 SQL 服务器和 Oracle 数据库中执行的脚本。脚本是:

update my_view
set value = 'Approved'
where token_name = 'TOKEN_NAME'
and isnull(value,'') = '

我从来没有 运行 Oracle 中的脚本,但我从互联网上知道 Oracle 没有 isnull(它是 NVL)或空字符串。

有什么方法可以只为两者创建一个脚本(比如使用 COALESCE,我真的不知道如何使用)?如果没有,Oracle 中的等效脚本是什么?

编写逻辑的标准方法是:

update my_view
    set value = 'Approved'
    where token_name = 'TOKEN_NAME' and
          (value is null or value = '');

这是标准的 SQL,应该适用于任何数据库。

另一方面,不一定所有数据库都支持更新视图。

如上所述,Oracle 中不存在空字符串。它们可以通过几种方式处理。 Coalesce()NVL() 的操作类似于 isnull()。在这 3 个中,Coalesce 是标准配置。来自 Oracle 文档:

COALESCE (expr1, expr2) = CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

或者您可以这样做:

UPDATE my_view
SET value = 'Approved'
WHERE token_name = 'TOKEN_NAME'
AND nullif(value,'') IS NULL

nullif() 会将空字符串评估为 null(它已经应该在 Oracle 中)。