3

在sql server中,如果我有一个数字n,并且n>=0 and n<=100,如何用sql将它转换成一个字符串?

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

它类似于 printf。

printf ('%2d", n);
4

7 回答 7

11

只要 n 严格小于100,就可以使用

  RIGHT(100+n,2)

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

  FORMAT(n,'00','en-US')
于 2013-03-28T04:30:09.843 回答
2

另一种方法(不知道你想如何处理大于 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
于 2013-03-28T04:30:50.110 回答
1

%2d需要翻译成2 digitsql server中的格式

试试这个

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
于 2013-03-28T04:29:06.520 回答
1
select RIGHT('00'+ convert(varchar, @val), 3)
于 2013-03-28T04:29:12.760 回答
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
于 2013-03-28T04:38:54.053 回答
0
SELECT REPLACE(STR(id, 4), SPACE(1), '0') AS YY FROM tableA

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

于 2013-08-15T07:48:17.443 回答
0

你可以使用sql的LPAD函数

试试这个

SELECT LPAD(n, 2, 0);

Result
01
02
....
10

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

更多示例

SELECT LPAD('hello', 10, '*');
Result :  *****hello
于 2021-02-03T14:41:48.140 回答