左对齐9.2 SQL选择SQL Server 2012

问题描述:

我的问题非常简单。我正在查询存储为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在错误的一边你有尝试将它们切换到另一边,并使用右而不是? –

相反:

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.11和111之间的区别)

你也可以使用

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