SQL Server 如何在SQL中显示int数据类型空值?

fd3cxomn  于 2023-02-03  发布在  其他
关注(0)|答案(3)|浏览(529)

如何在SQL中显示int数据类型空值?
我在int数据类型列上使用了一个case语句,对小于或等于0的值显示为空。

case when [TotalValue] <= 0 Then ''
 when [TotalValue] > 0 Then [TotalValue]
 End as [TotalValue]

此时,case语句对任何小于或等于0的值返回0。我希望将它们设置为Empty。使用0而不是负值不是正确的结果。
如何将记录转换为只显示空?

hfyxw5xn

hfyxw5xn1#

您的代码的问题是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]
u4vypkhs

u4vypkhs2#

我认为最简单的构想是:

(case when TotalValue > 0 Then TotalValue
 end) as TotalValue
tpxzln5u

tpxzln5u3#

您始终可以将数字强制转换为varchar(字符串),然后在NULL时将其设置为空字符串
ISNULL(CAST(以varchar(10)表示的总值),'')作为总值

相关问题