我正在尝试让以下内容打印任何带有' '
的空值:
CAST(ROUND(ISNULL(dbo.vwCumulativeGPA.GPA,' '), 3) AS DECIMAL(18, 3)) AS 'CUM GPA'
我遗漏了一些重要的东西。非常感谢任何帮助。
答案 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位小数并显示尾随零