2017-04-19 86 views
0

我的問題非常簡單。我正在查詢存儲爲929.77的SQL值,但我需要該列始終爲11位數,即使它們全部爲零,所以我想拉取該值以使其顯示爲00000092977.現在,我得到了完全相反的結果並拉92977000000.左對齊9.2 SQL選擇SQL Server 2012

在此先感謝。

LEFT(REPLACE(Cast(ISNULL(c2.preinjwage,0) as varchar), '.', '') + '0000000000',11) as 'wage' 
+0

那麼......如果0在錯誤的一邊你有嘗試將它們切換到另一邊,並使用右而不是? –

回答

2

相反:

RIGHT('0000000000'+REPLACE(Cast(ISNULL(c2.preinjwage,0) as varchar(12)), '.', ''),11) as 'wage' 

快速試驗:

declare @in decimal(9,2)='929.77' 

select right('0000000000'+replace(Cast(isnull(@in,0) as varchar(12)), '.', ''),11) as 'wage' 

rextester演示:http://rextester.com/GTGSJ72810

回報:

+-------------+ 
| wage  | 
+-------------+ 
| 00000092977 | 
+-------------+ 
+0

完美!謝謝! – Dizzle

+0

@Dizzle樂意幫忙! – SqlZim

1

假設你總是有兩位數字的小數點後(好像數字的小數點後的數字可以改變所提出的格式是沒有意義的,因爲它不會1.11和111之間的區別)

你也可以使用

SELECT FORMAT(CAST(ISNULL(c2.preinjwage,0) * 100 AS INT), 'd11')