将数字转换为文本时,我正在处理一个奇怪的错误。
无论数字为零,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 :(得分:3)
#
不会填充0
。我想您想要的是:
SELECT FORMAT ( 0 , N'0.######################' )
请参见https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings