【问题标题】:Right Align Numeric Data in SQL ServerSQL Server 中的数值数据右对齐
【发布时间】:2008-09-11 15:47:03
【问题描述】:

我们都知道 T-SQL 的字符串操作功能有时还有很多不足之处...

我有一个数字字段需要在 T-SQL 中作为右对齐文本列输出。示例:

Value
----------
   143.55
  3532.13
     1.75

你会怎么做呢?一个好的解决方案应该是清晰而紧凑的,但请记住有“太聪明”之类的东西。

我同意这是错误的做法,但有时我们会被我们无法控制的力量所困。

谢谢。

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    STR function 有一个可选的长度参数以及一个小数位数。

    SELECT STR(123.45, 6, 1)
    
    ------
     123.5
    
    (1 row(s) affected)
    

    【讨论】:

    • 太棒了!我怎么会错过这个?请注意 STR() 采用浮点数,而不是小数。 SQLServer 帮助对此非常明确(“...近似数字(浮点)数据类型的表达式”):如果您的小数有足够的位数,则四舍五入会给您带来麻烦。对于大多数人来说,这仍然是一个很好的答案
    【解决方案2】:

    如果您必须在 SQL 中执行此操作,您可以使用以下代码(此代码假定您没有大于 40 个字符的数字):

    SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
    CAST(numColumn AS varchar(40)) FROM YourTable
    

    【讨论】:

      【解决方案3】:

      最简单的方法是向左填充:

      CREATE FUNCTION PadLeft(@PadString nvarchar(100), @PadLength int)
      RETURNS nvarchar(200)
      AS
      begin
      return  replicate(' ',@padlength-len(@PadString)) + @PadString
      end
      go
      print dbo.PadLeft('123.456', 20)
      print dbo.PadLeft('1.23', 20)
      

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 2014-06-30
        • 2016-11-15
        • 2020-11-20
        • 2021-10-12
        • 2015-05-05
        相关资源
        最近更新 更多