2013-09-05 33 views
0

我有數據需要向其中添加前導零。但問題是數據類型是float。所以每當我添加零時,它都會自動忽略它們。我試圖將前導零添加到它然後嘗試將其轉換爲varchar(50)。添加前導零並將其作爲varchar轉換爲浮點型

我用下面的查詢(感謝Damien_The_Unbeliever先生):

select '0' + convert (varchar(50), (wallet_sys)) as wallet_sys from NewSysData1 

然而結果顯示:01.72295e + 009,而不是顯示是這樣的:01718738312

我該怎麼辦?

PS:有些樣本數據均低於:

1718738312, 8733983312, 9383879312 

我想這些是:

01718738312, 08733983312, 09383879312 
+1

是否使用故意浮動的decimal類型的規模調整小數位的數量?爲什麼不是bigint或小數? –

+0

您使用的是哪個版本的SQL Server? – Thomas

+1

它只是一個顯示問題。你用什麼來查看結果? –

回答

2

可以使用str() function和修剪

select '0' + ltrim(rtrim(str(wallet_sys))) as wallet_sys from NewSysData1; 

SqlFiddle

+0

刪除小數點 – Magnus

+3

@Magnus是的,但OP沒有要求01718738312.00作爲結果...所以我剝光了。 'str(wallet_sys,38,10)'會給出例如'08733983312.0000000000',這看起來不像deisred的結果... –

0
select right(replicate('0',10)+cast(wallet_sys as varchar),11) 
+0

它可以工作,但給出如下結果:01.72295e + 009。 –

1

我已使用以下這樣做:

select right('00' + convert(varchar, MONTH(getdate())),2) 
0

從手冊:http://technet.microsoft.com/en-us/library/ms187928.aspx

語法CONVERT:

CONVERT(DATA_TYPE [(長度)]表達[,風格]

-

float和real樣式

當表達是浮子真實下表中所示的值的,樣式可以是一個。其他值被處理爲0

-

Value   | Output 
---------------+--------------------- 
0 (default) | A maximum of 6 digits. Use in scientific notation, when appropriate. 
1    | Always 8 digits. Always use in scientific notation. 
2    | Always 16 digits. Always use in scientific notation. 
126, 128, 129 | Included for legacy reasons and might be deprecated in a future release. 

注意,沒有任何的格式選項允許不在科學記數法不再值。

因此,我們必須做的是轉換成另一種類型作爲臨時:

SELECT '0' + Convert(varchar(50), Convert(decimal(38, 10), Convert(float, '1.72295e+009'), 0)) 

通過改變

相關問題