我的問題非常簡單。我正在查詢存儲爲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'
我的問題非常簡單。我正在查詢存儲爲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'
相反:
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 |
+-------------+
假設你總是有兩位數字的小數點後(好像數字的小數點後的數字可以改變所提出的格式是沒有意義的,因爲它不會1.11和111之間的區別)
你也可以使用
SELECT FORMAT(CAST(ISNULL(c2.preinjwage,0) * 100 AS INT), 'd11')
那麼......如果0在錯誤的一邊你有嘗試將它們切換到另一邊,並使用右而不是? –