【问题标题】:SQL Server Management Studio STR() function centers column dataSQL Server Management Studio STR() 函数中心列数据
【发布时间】:2015-11-12 03:55:04
【问题描述】:

我认为这更像是一个表面问题,由 SQL Server Management Studio 引起,但有人知道为什么我使用 floatnvarchar 转换为 nvarchar 函数时我的列数据发生偏移吗?这是 SQL Server Management Studio 中的装饰性错误,还是实际上影响我的数据的有意义的错误?

有问题的列是第 3 列,您可以看到有多个 1 似乎相对于较大的 10 位数字居中。

【问题讨论】:

  • 我认为 SSMS 右对齐数字但居中(或有时左对齐)字符串。
  • @GordonLinoff 难道只有数字数据的整个文本列是我看到的居中类型偏移吗?您注意到的两种情况的混合?
  • 列未居中对齐。 str 函数返回 CHAR 数据,而不是 varchar。您看到的 1 填充到左侧。填充占用的空间较小,因此它似乎以这种方式对齐。看这里”msdn.microsoft.com/en-IN/library/ms189527.aspx

标签: sql sql-server database ssms sql-function


【解决方案1】:

用空格填充。

其中 VALUE = 1(浮点数),我得到:

len(str(VALUE)) = 10
ascii(str(VALUE)) = 32
ascii(right(str(VALUE),9)) = 32
etc...

char(32) = 空格

根据msdn

短浮点表达式在指定长度内右对齐,长浮点表达式被截断到指定的小数位数。例如,STR(12,10) 产生 12 的结果。这在结果集中是右对齐的。

似乎在这种情况下,“右对齐”意味着用空格完全填充一个短值,以便“数字作为字符串”组件位于字符串的远端。如果这不是你想要的,那么你可能想要一个不同的功能。

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多