我正在生成一个视图,如果它们为null,我想用预定义的值填充单元格。
视图的选择是:
SELECT a_case.Id,
R1.Type AS Referred_by_1,
R1.Type AS Referred_by_2,
R1.Type AS Referred_by_3
FROM dbo.CaseInfo a_case LEFT JOIN
dbo.Referrer R1 ON P.Id = R1.Case_Id AND R1.Seq = 1 LEFT JOIN
dbo.Referrer R2 ON P.Id = R2.Case_Id AND R2.Seq = 2 LEFT JOIN
dbo.Referrer R3 ON P.Id = R3.Case_Id AND R3.Seq = 3
引荐者是可选的,如果没有指定,我需要用'ND'填充该字段。
我想我可能应该使用CASE WHEN,但我不确定如何将其整合到现有的选择中......
感谢任何建议! - L
答案 0 :(得分:23)
您可以使用ISNULL
:
SELECT a_case.Id,
ISNULL(R1.Type, 'ND') AS Referred_by_1,
ISNULL(R2.Type, 'ND') AS Referred_by_2,
ISNULL(R3.Type, 'ND') AS Referred_by_3
FROM ...
答案 1 :(得分:21)
使用COALESCE,例如
SELECT a_case.Id,
COALESCE(R1.Type, 'ND') AS Referred_by_1,
COALESCE(R2.Type, 'ND') AS Referred_by_3,
COALESCE(R3.Type, 'ND') AS Referred_by_3
FROM ...
答案 2 :(得分:3)
case when R1.Type is null then 'ND' else R1.Type end AS Referred_by_3
答案 3 :(得分:2)
您可以使用IsNull(column_expression,default_value)
功能。
答案 4 :(得分:0)
为什么不在数据库表中的字段上定义默认值呢?记住,如果你需要所有记录都有这个值或者一个提交插入或删除,你永远不希望该值为null,你必须修复任何现有的空值,然后添加默认值并确保该字段设置为不允许空值。这种方法的优点是它确保无论数据如何输入系统,都将遵循规则。如果您只想在某些时候使用默认值,请在应用程序代码或存储过程中执行此操作。但是,如果该字段应该有alawys值,那么最好在数据库中进行以避免数据完整性问题。