[英]SQL Server - Convert decimal to string with padding - implied decimal
我需要格式化带有左,右填充零的数字。 该数字的精度为十进制(9,5)。 我正在转换为字符串,并且长度必须为4。我正在使用SQL Server 2008。
这里有些例子:
If 3.0 then I need 0003
If 30.0 then I need 0030
If 112.8 then I need 1128
If 120.0 then I need 1200
等等。
我尝试了多种格式功能,例如Right,Left,Replace等。但是似乎没有任何组合可以使我获得正确的格式。
下面的例子:
Right('00' + Replace(SUBSTRING(CAST(My_Table.My_Field as varchar),1,4),'.',''),4)
它对于数字36.0正常工作,但是对于数字212.0,我得到0212。 我需要是2120
另一个
right('000'+replace(value,'.',''),4)
可能以下sql代码将很有用:
SELECT
CASE WHEN NUMBER < 100
THEN RIGHT('0000' + CAST(CAST(NUMBER AS INT) AS VARCHAR),4)
ELSE RIGHT(SUBSTRING(CAST(NUMBER AS VARCHAR),1,CHARINDEX('.',CAST(NUMBER AS VARCHAR))-1),4) + LEFT(PARSENAME(NUMBER,1),1)
END RESULT
FROM TEST
您可以在这里sqlfiddle尝试一下。
注意:NUMBER是您的字段,TEST是您的表。
如果3.0应该是0030,而30.0应该是0300,这对于120.0应该是1200是有意义的,那么此select语句应该起作用:
SELECT SUBSTR('0000'||REPLACE(TableName.NumberColumn,'.',''),-4,4) AS Output FROM TableName;
试试这个-
DECLARE @temp TABLE (Value DECIMAL(4,1))
INSERT INTO @temp (Value)
VALUES (3.0),(30.0), (112.8),(120.0)
SELECT RIGHT('000' + CAST(CAST(Value * 10 AS INT) AS VARCHAR(4)), 4)
FROM @temp
输出-
----
0030
0300
1128
1200
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.