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