SQL Server:为什么参数为零时FORMAT返回空字符串?

时间:2018-10-28 17:23:29

标签: sql sql-server formatting string-formatting sql-server-2017

将数字转换为文本时,我正在处理一个奇怪的错误。

无论数字为零,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 '' */

#.#####恰好产生了我们需要的样式,因此我们希望尽可能保留这种样式。

作为一种解决方法,我正在手动检查零-但这很烦人并且有点不可缩放。

1 个答案:

答案 0 :(得分:3)

#不会填充0。我想您想要的是:

SELECT FORMAT ( 0 , N'0.######################' ) 

请参见https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings