如何在SQL中显示int数据类型空值?
我在int数据类型列上使用了一个case语句,对小于或等于0的值显示为空。
case when [TotalValue] <= 0 Then ''
when [TotalValue] > 0 Then [TotalValue]
End as [TotalValue]
此时,case语句对任何小于或等于0的值返回0。我希望将它们设置为Empty。使用0而不是负值不是正确的结果。
如何将记录转换为只显示空?
如何在SQL中显示int数据类型空值?
我在int数据类型列上使用了一个case语句,对小于或等于0的值显示为空。
case when [TotalValue] <= 0 Then ''
when [TotalValue] > 0 Then [TotalValue]
End as [TotalValue]
此时,case语句对任何小于或等于0的值返回0。我希望将它们设置为Empty。使用0而不是负值不是正确的结果。
如何将记录转换为只显示空?
3条答案
按热度按时间hfyxw5xn1#
您的代码的问题是
Then ''
自动转换为int
值,对于空字符串,该值恰好为0(尝试select CAST('' as int)
检查)。定义不明确的列(如您的列)的数据类型由data type precedence rules确定。
明确定义列的数据类型可以解决这个问题。
我建议尝试从数据库返回NULL,如下所示:
报表引擎很可能会将NULL转换为类似空字符串的内容。此外,如果报表引擎支持数值操作(例如,计算所选内容的平均值),您还可以从操作数值的功能中获得一些好处。
或者,尝试在SQL中将值强制转换为字符串:
u4vypkhs2#
我认为最简单的构想是:
tpxzln5u3#
您始终可以将数字强制转换为varchar(字符串),然后在NULL时将其设置为空字符串
ISNULL(CAST(以varchar(10)表示的总值),'')作为总值