左对齐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'
答
相反:
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在错误的一边你有尝试将它们切换到另一边,并使用右而不是? –