SQL Server Management Studio STR()函数使列数据居中

时间:2015-11-12 03:55:04

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

我认为这更像是一个整容问题并且由SQL Server Management Studio引起,但有人知道为什么我的列数据在使用{{float转换为nvarchar时会被抵消1}}功能?这是SQL Server Management Studio中的一个装饰性错误,还是实际上影响我数据的有意义的错误?

有问题的列是第3列,正如您所看到的那样,有多个1似乎与较大的10位数相对。

Screenshot of my query results

1 个答案:

答案 0 :(得分:0)

用空格填充。

如果VALUE = 1(浮动),我得到:

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

char(32)= space

根据msdn

  

short float_expression在指定长度内右对齐,long float_expression被截断为指定的小数位数。例如,STR(12,10)产生12的结果。这在结果集中是右对齐的。

似乎"正确理由"在这种情况下,意味着用空格填充一个短值,以便' number-as-string' component位于字符串的远端。如果这不是你想要的,那么你可能想要一个不同的功能。