3

SQLサーバーで、数字がある場合、nSQLn>=0 and n<=100で文字列にキャストする方法は?

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

%2d2 digitSQLサーバーでフォーマットに変換する必要があります

これを試して

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

結果 :-

01

0 to 100usecaseステートメント間の数字をチェックするために

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 に答える