如何在sql server中将数字转换为带有0前缀的字符串

时间:2013-03-28 04:21:18

标签: sql sql-server

在sql server中,如果我有一个数字nn>=0 and n<=100,如何将它转换为带有sql的字符串?

1 => '01'
2 => '02'
...
10 => '10'
99 => '99'

类似于printf。

printf ('%2d", n);

7 个答案:

答案 0 :(得分:7)

只要n严格 <100>,就可以使用

  RIGHT(100+n,2)

在SQL Server 2012中,您还可以使用FORMAT,以下内容将起作用,并且还为100提供“100”。

  FORMAT(n,'00','en-US')

答案 1 :(得分:1)

%2d需要在sql server中翻译为2 digit格式

试试这个

Declare @val int
set @val=1
SELECT RIGHT('0' + CAST(@val AS VARCHAR(2)), 2)

结果: -

01

为了检查0 to 100使用case声明

之间的数字
SELECT  case when @val>0 and @val<100 then 
               RIGHT('0' + CAST(@val AS VARCHAR), 2)
               else 
               NULL
               END

答案 2 :(得分:1)

select RIGHT('00'+ convert(varchar, @val), 3)

答案 3 :(得分:1)

另一种方法(不确定如何处理大于99的数字):

DECLARE @numbers AS TABLE(Val INT)
INSERT INTO @numbers VALUES(1)
INSERT INTO @numbers VALUES(2)
INSERT INTO @numbers VALUES(10)
INSERT INTO @numbers VALUES(11)
INSERT INTO @numbers VALUES(98)
INSERT INTO @numbers VALUES(99)
INSERT INTO @numbers VALUES(100)
SELECT REPLACE(STR(Val, 2), ' ', '0') FROM @numbers

答案 4 :(得分:0)

这样做:

DECLARE @table AS TABLE(n INT)
INSERT INTO @table 
VALUES(1),(3),(5),(9),(10),(50),(99),(100)

Select Case When n<10 Then '0'+Cast(n as varchar(10)) Else Cast(n as varchar(10)) End From @table

答案 5 :(得分:0)

SELECT REPLACE(STR(id, 4), SPACE(1), '0') AS YY FROM tableA

这将是解决问题的明智方法......

答案 6 :(得分:0)

可以使用sql的LPAD功能

试试这个

SELECT LPAD(n, 2, 0);

Result
01
02
....
10

说明:LPAD 函数用第三个参数(即给定示例中的 0)左填充字符串,直到第二个参数中给出的长度(即给定示例中的 2)

更多示例

SELECT LPAD('hello', 10, '*');
Result :  *****hello