左对齐9.2 SQL选择SQL Server 2012

左对齐9.2 SQL选择SQL Server 2012,sql,sql-server,decimal,Sql,Sql Server,Decimal,我的问题相当直截了当。我正在查询存储为929.77的SQL中的一个值,但我需要该列始终为11位,即使它们都是零,因此我希望提取该值,使其显示为000000 92977。现在我得到的是完全相反的结果,是92977000000 提前谢谢 LEFT(REPLACE(Cast(ISNULL(c2.preinjwage,0) as varchar), '.', '') + '0000000000',11) as 'wage' 相反: RIGHT('0000000000'+REPLACE(Cast(ISN

我的问题相当直截了当。我正在查询存储为929.77的SQL中的一个值,但我需要该列始终为11位,即使它们都是零,因此我希望提取该值,使其显示为000000 92977。现在我得到的是完全相反的结果,是92977000000

提前谢谢

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演示:

返回:

+-------------+
|    wage     |
+-------------+
| 00000092977 |
+-------------+
相反:

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演示:

返回:

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

假设小数点后总是有两位数(好像小数点后的位数可以改变,建议的格式没有意义,因为它无法区分1.11和111)

你也可以使用

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

假设小数点后总是有两位数(好像小数点后的位数可以改变,建议的格式没有意义,因为它无法区分1.11和111)

你也可以使用

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

嗯…如果0在错误的一侧,您是否尝试过将其切换到另一侧并使用正确的方法来代替???嗯…如果0在错误的一侧,您是否尝试过将其切换到另一侧并使用正确的方法来代替???完美!谢谢大家!@很乐意帮忙!完美的谢谢大家!@很乐意帮忙!