如何在十进制字段中更改NULLS以显示为“”

时间:2017-09-20 15:24:52

标签: sql sql-server tsql

我正在尝试让以下内容打印任何带有' '的空值:

CAST(ROUND(ISNULL(dbo.vwCumulativeGPA.GPA,' '), 3) AS DECIMAL(18, 3)) AS 'CUM GPA'

我遗漏了一些重要的东西。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

ROUND(' ', 3)0,因此内部ISNULL()的效果会丢失。

为了使此工作依赖于NULL传播,整个表达式还必须返回一个字符类型:

ISNULL(CAST(CAST(ROUND(vwCumulativeGPA.GPA, 3) AS DECIMAL(18, 3)) AS VARCHAR(MAX)), ' ') AS 'CUM GPA'

这似乎是一个坏主意,它最好在客户端完成。

答案 1 :(得分:0)

只有像varchar这样的字符串数据类型可以将空格或空格字符作为其值。

十进制字段只能包含NULL或小数作为其值。

如果您将最终列转换为varchar,则可以使用' '替换NULLS。

ISNULL(CONVERT(varchar(7),(CAST(ROUND(dbo.vwCumulativeGPA.GPA, 3) AS DECIMAL(18, 3))),' ') AS 'CUM GPA'

答案 2 :(得分:0)

应该是一个表示层项目,但是,如果2012+你可以使用format()。

示例

IsNull(format(dbo.vwCumulativeGPA.GPA,'0.000'),' ') 

请注意。格式有一些很棒的功能,但不知道它是一个表演者。换句话说,谨慎使用

此外,'0.000'会将您的值四舍五入为3位小数并显示尾随零