【问题标题】:SQL Server: Why does FORMAT return an empty string when the parameter is a zero?SQL Server:当参数为零时,为什么FORMAT返回一个空字符串?
【发布时间】: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


【解决方案1】:

# 不填充零,而 0 填充。我想你想要的是:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2013-10-22
    • 2021-10-09
    相关资源
    最近更新 更多