2015-11-12 75 views
0

我認爲這是更多的整容問題,並由SQL Server Management Studio引起的,但是有人知道爲什麼我的列數據被抵消,當我將float轉換爲nvarchar使用STR()函數?這是SQL Server Management Studio中的一個整型錯誤還是實際上是影響我數據的有意義的東西?SQL Server Management Studio STR()函數中心列數據

有問題的列是第3列,因爲您可以看到有多個1似乎與較大的10位數字相關。

Screenshot of my query results

+0

我認爲SSMS正確的數字,但中心(或可能有時左對齊)的字符串。 –

+0

@GordonLinoff難道是這樣的情況,只有數字數據的整個文本列將是我看到的居中類型偏移量?你注意到2種情況的混合物? –

+0

該列未居中對齊。 str函數返回CHAR數據,而不是varchar。你看到的1被填充到左邊。填充物的空間較小,因此它似乎以這種方式排列。請參閱此處「https://msdn.microsoft.com/zh-CN/library/ms189527.aspx – Adish

回答

0

它是填充空格。

其中value = 1(浮動),我得到:

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

CHAR(32)=空間

根據msdn

短float_expression是在右對齊指定的長度和一個長的float_expression被截斷爲指定的小數位數。例如,STR(12,10)產生12的結果。這在結果集中是右對齊的。

似乎在此上下文中的「右對齊」意味着正好用空格填充短值,以便「數字作爲字符串」組件位於字符串的最末端。如果這不是你想要的,那麼你可能需要一個不同的功能。

相關問題