【发布时间】:2018-10-28 17:23:29
【问题描述】:
在将数字转换为文本时,我正在处理一个奇怪的错误。
只要数字为零,FORMAT 就会返回一个空字符串,而不是 '0'
这种行为有原因吗?
我是否错误地使用了FORMAT 函数?
SELECT FORMAT ( 1 , N'#.######################' ) /* result '1' */
SELECT FORMAT ( 1E0 , N'#.######################' ) /* result '1' */
SELECT FORMAT ( 1.0 , N'#.######################' ) /* result '1' */
SELECT FORMAT ( 0 , N'#.######################' ) /* result '' */
SELECT FORMAT ( 0E0 , N'#.######################' ) /* result '' */
SELECT FORMAT ( 0.0 , N'#.######################' ) /* result '' */
#.##### 产生了我们需要的样式,因此我们希望尽可能保留它。
作为一种解决方法,我手动检查零 - 但这很烦人,而且有点不可扩展。
【问题讨论】:
-
在最不重要的地方指定一个零(例如'###0')。
-
就个人而言,我一开始不会使用
FORMAT,它的性能很糟糕;尤其是与带有样式代码的CONVERT之类的东西相比时。不过,这些事情确实应该在表示层中完成,而不是在 DBMS 中。 -
@Larnu 点已被占用。不过,这不适用于对性能敏感的生产活动。相反,它是一个用于开发测试和报告的框架。
标签: sql sql-server formatting string-formatting sql-server-2017