首页 > 解决方案 > nvl 函数未返回预期结果

问题描述

我知道该nvl函数仅适用于“null”,而不适用于空字符串。我只是想知道是否有一个函数可以帮助我用另一个替换空白/空值。

我改为使用:

CASE WHEN expression_1 is null or expression_1 = '' then expression_2 else expression_1

expression_1 列有空单元格,而不是空单元格。

标签: sqlfunctionnvl

解决方案


NVL()是最常与 Oracle 相关联的功能。等效的标准 SQL 函数是COALESCE().

默认情况下,Oracle 将NULL字符串和空字符串 ( '') 视为相同。因此,'' IS NULL评估为“真”(并且'' = ''相当混乱地评估为,这在子句NULL中为假)。WHERE

因此,您可以在空字符串上使用NVL()或。COALESCE()这些是相同的:

NVL(NULL, 'A')
NVL('', 'A')
COALESCE(NULL, 'A')
COALESCE('', 'A')

是一个 db<>fiddle。


推荐阅读