如何在SQL中显示int数据类型的空值?
我在int数据类型列上有一个case语句,以显示小于或等于0的值为空。
case when [TotalValue] <= 0 Then ''
when [TotalValue] > 0 Then [TotalValue]
End as [TotalValue]
现在,对于小于或等于0的任何值,case语句将返回0。我希望将它们设置为Empty。用0而不是负值表示不正确。
如何将记录转换为仅显示空白?
答案 0 :(得分:1)
您的代码的问题是Then ''
会自动转换为int
的值,对于空字符串,该值恰好为0(尝试select CAST('' as int)
进行检查)。
模棱两可定义的列(例如您的列)的数据类型由data type precedence rules确定。
明确定义列的数据类型将解决此问题。
我建议尝试从数据库中返回NULL,如下所示:
case when [TotalValue] <= 0 Then NULL
when [TotalValue] > 0 Then [TotalValue]
End as [TotalValue]
您的报表引擎很可能会将NULL转换为类似空字符串的内容。此外,如果您的报表引擎支持数字值,则可能会获得一些操纵数字值的好处(例如,计算平均值而不是选择值)。
或者,尝试在SQL中将值强制转换为字符串:
case when [TotalValue] <= 0 Then ''
when [TotalValue] > 0 Then CAST([TotalValue] as varchar)
End as [TotalValue]
答案 1 :(得分:0)
我认为最简单的构造是:
b.location = '2001