如果为空,则显示"空白"单元格

lij*_*ije 0 sql t-sql sql-server

我有一个decimal(9,2)列,我想在输出时显示一个空单元格NULL. COALESCE(column, '')将显示空单元格,不应该要求数据类型转换.

但是,0当我尝试这个时,我会看到:

COALESCE(CONVERT(float,columnname),'') 
Run Code Online (Sandbox Code Playgroud)

我也试过没有CONVERT,像这样:

COALESCE(columnname,'')
Run Code Online (Sandbox Code Playgroud)

我看到这个错误:

将数据类型varchar转换为数字时出错

有人可以帮我这个吗?

Joe*_*orn 5

数字类型永远不能为空.它们要么具有价值,要么具有价值NULL."空白"实际上意味着"空字符串",您只是不能将字符串值放入数字类型数据中.如果你想看空白,你必须这样做:

COALESCE(STR(columnname),'') 
Run Code Online (Sandbox Code Playgroud)

请记住:现在这是一个varchar在结果列,而不是一个decimal(9,2)了.想要使用这些数字的下游任何东西都必须再次将字符串数据重新解析为数字.

最佳选项通常是让数据库服务器返回NULL,并有关于如何处理这些值做系统正担心的发言结束......但我知道这是不可能的.