我正在使用(+ 操作)进行一些计算,但我看到我有一些空结果,我检查了数据库,我发现自己在做类似number+number+nul+number+null+number...=null
. 这对我来说是个问题。
对我的问题有什么建议吗?如何解决这个国王的问题?谢谢
我的偏好是使用 ANSI 标准结构:
select coalesce(n1, 0) + coalesce(n2, 0) + coalesce(n3, 0) + . . .
NVL()
特定于 Oracle。 COALESCE()
是 ANSI 标准,几乎在所有数据库中都可用。
您可以使用类似NVL
将 null 转换为值的方法,例如 0。
select NULL + 5 from dual;
将返回null
。
select NVL(NULL, 0) + 5 from dual;
将返回5
。
刚刚意识到没有一个答案提到 COALESCE() 或 NVL() 是什么,我想澄清一下,因为它可能会令人困惑(我最初认为它们是连词函数)。
因此,假设您要选择表格中地点的完整地址,您有 2 个字段 - AddressLine1 和 AddressLine2。假设“AddressLine1”始终为 NOT NULL,并且“AddressLine2”可以为 NULL。然后你可能想写这样的东西:
(SQL Server):
SELECT AddressLine1 + COALESCE(AddressLine2, '')
FROM Places
因此,对于 AddressLine2= NULL 的条目,它不会返回 NULL。
PS我想知道为什么加号操作在SQL中是这样设计的,看起来真的很违反直觉。