我需要左右填充零的数字格式。数字的精度是十进制(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
答案 0 :(得分:2)
另一个
right('000'+replace(value,'.',''),4)
答案 1 :(得分:1)
以下的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是您的表。
答案 2 :(得分:1)
如果3.0应该是0030而30.0应该是0300,这对于120.0应该是1200是有意义的,那么这个select语句应该有效:
SELECT SUBSTR('0000'||REPLACE(TableName.NumberColumn,'.',''),-4,4) AS Output FROM TableName;
答案 3 :(得分:1)
试试这个 -
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