1
A
回答
3
是的,这是正确的做法。通过使用isnull
函数,您创建的表达式必须返回一个值,无论如何。这由SQL Server评估为一个计算列,即not null
。
2
我更喜欢ANSI标准的COALESCE函数,但ISNULL很好。要使用COALESCE,定义计算列:
COALESCE(dbo.fn_GetPrice(ItemId), 0)
编辑学到新的东西每天。我做了以下内容:
create table t (c1 int null
, c2 as isnull(c1, 1)
, c3 as isnull(c1, null)
, c4 as coalesce(c1, 1)
, c5 as coalesce(c1, null)
)
exec sp_help t
和C2确实不为空的根据则sp_help,但C4被报告为空,即使是没有办法,凝聚表达可能会导致空值。
而且截至2008年,我不知道2005年是否存在选项,一个能坚持一个计算列,并添加约束:
create table t (c1 int null
, c2 as isnull(c1, 1) persisted not null
, c3 as isnull(c1, null) persisted not null
, c4 as coalesce(c1, 1) persisted not null
, c5 as coalesce(c1, null) persisted not null
)
go
insert into t (c1) values (null)
导致违反约束。
+1
Woops! 我只是发现它不会导致计算列是不可空的,因为COALESCE也可以是COALESCE(NULL,NULL),即不保证非空结果,我猜ISNULL是唯一的选择。 我很抱歉打扰你,我刚刚发现它,我已经改变了数据库中的几个位置。 – Shimmy 2009-12-21 23:54:41
相关问题
- 1. 如何在SQL Server中使计算列可以为空
- 2. 计算列为空
- 3. 将计算字段设置为不可为空
- 4. 如何使用生成ID为计算列中的不同值?
- 5. 可以在另一个计算列中使用计算列吗?
- 6. 如何计算空白
- 7. 不可空列的联合可为空
- 8. 如何计算非空列的数量而不给出范围?
- 9. Excel不计算“”作为空单元格
- 10. 不计算空格作为字c
- 11. Varchar列:可为空或不可为
- 12. 如何使计算列成为持久的列?
- 13. 如何使用默认值添加不可为空的列
- 14. 如何使用java获取表的不可为空的列?
- 15. 如何使Excel“IF”公式计算空白单元格为“0”?
- 16. 计算列为PK
- 17. 如何计算mysql中的不同列?
- 18. 如何计算不同的日期列
- 19. 如何计算QTableView行高。 QHeaderView :: ResizeToContents不可见的行/列
- 20. 如何在计算列中公式中的列为空白时显示通知
- 21. 计算,不包括空值
- 22. 如何计算列使用Angularjs
- 23. 如何计算使用列SQL Server
- 24. 如何在哪里使用计算列?
- 25. MySQL - 如何计算空值而不是空值?
- 26. 如何计算列数
- 27. 如何选择计算列
- 28. 如何计算多列?
- 29. 如何计算两个列
- 30. 使用Jquery计算空textareas
您使用哪种SQL方言? – kiamlaluno 2009-12-21 04:18:02
您应该澄清语言,SQL方言,数据库版本等 – harschware 2009-12-21 04:18:33
Microsoft SQL服务器 – Shimmy 2009-12-21 04:23:13