在sql server中,如果我有一个数字n
和n>=0 and n<=100
,如何将它转换为带有sql的字符串?
1 => '01'
2 => '02'
...
10 => '10'
99 => '99'
类似于printf。
printf ('%2d", n);
答案 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