web-dev-qa-db-ja.com

T-SQL形式の整数から2桁の文字列

T-SQLでこれを行う簡単な方法が見つかりません。

たとえば、整数 '2'から90までを返す列(SortExport_CSV)があります。保存されている数値が1桁の場合、0で始まる2桁の文字列に変換する必要があります。CASTを使用しようとしましたしかし、優先形式(0#)でスタイルを表示する方法にこだわっています

もちろん、フロントエンド(SSRS、MSAccess、Excelなど)でこれを行うのは簡単ですが、この例ではフロントエンドがなく、生のデータセットに既にフォーマットされた2桁の文字列を提供する必要があります。

32
James Polhemus
select right ('00'+ltrim(str( <number> )),2 )
52
Sparky

T-SQLの組み込み形式関数を使用できます。

declare @number int  = 1
select format (@number, '0#')
19
Alex
SELECT RIGHT('0' + CAST(sortexport_csv AS VARCHAR), 2)
FROM your_table
18
LukeH

あなたはすべてあまりにも多くの仕事をしています:

right(str(100+@x),2)

-- for a function, same idea: 
--
create function zeroPad( @yourNum int, @wid int)
as 
begin
  return right( 1000000+@yourNum), @wid)
end
7
Tom Considine

値を文字列に変換し、その前にゼロを追加して(2文字またはツリー文字になるように)、最後の文字を取得します。

right('0'+convert(varchar(2),Sort_Export_CSV),2)
5
Guffa
DECLARE @Number int = 1;
SELECT RIGHT('0'+ CONVERT(VARCHAR, @Number), 2)
--OR
SELECT RIGHT(CONVERT(VARCHAR, 100 + @Number), 2)
GO
3
Aleksei

これを試すことができます

SELECT RIGHT( '0' + convert( varchar(2) , '0' ),  2 ) -- OUTPUTS : 00
SELECT RIGHT( '0' + convert( varchar(2) , '8' ),  2 ) -- OUTPUTS : 08
SELECT RIGHT( '0' + convert( varchar(2) , '9' ),  2 ) -- OUTPUTS : 09
SELECT RIGHT( '0' + convert( varchar(2) , '10' ), 2 ) -- OUTPUTS : 10
SELECT RIGHT( '0' + convert( varchar(2) , '11' ), 2 ) -- OUTPUTS : 11

これは役立つはずです

2
Yasser

もう一つの例:

select 
case when teamId < 10 then '0' + cast(teamId as char(1)) 
else cast(teamId as char(2)) end      
as 'pretty id',
* from team
1
Paul Sasik

これを試して

--2から90までの数を生成

;with numcte as(
select 2 as rn
union all
select rn+1 from numcte where rn<90)

-長さに基づいて数値をフォーマットするプログラム

select case when LEN(rn) = 1 then '00'+CAST(rn as varchar(10)) else CAST(rn as varchar(10)) end number
from numcte

部分出力:

number    
002
003
004
005
006
007
008
009
10
11
12
13
14
15
16
17
18
19
20
1
priyanka.sarkar

以下は、指定されたパディング文字で値をパディングする小さな関数です。左にパディングする文字数を指定できます。

   Create    function fsPadLeft(@var varchar(200),@padChar char(1)='0',@len int)
      returns varchar(300)
    as
    Begin
      return replicate(@PadChar,@len-Len(@var))+@var
    end

呼び出すには:

declare @value int; set @value =2
select dbo.fsPadLeft(@value,'0',2)
1
TonyP

どうぞ

select RIGHT(REPLICATE('0', 2) + CAST(2 AS VARCHAR(2)), 2)

02を返す必要があります

0
Pratap .R

試してみる

right('0' + convert(varchar(2), @number),2)
0
Santiago Cepas

次のような関数を作成できます。

_CREATE FUNCTION [dbo].[f_convert_int_to_2_digits](@input int)
RETURNS varchar(10)
AS
BEGIN
    --return value
    DECLARE @return varchar(10)

    if @input < 10
    begin
    set @return = '0' + convert(varchar(1), @valor)
end
    else
    begin
        set @return = convert(varchar(10), @input)
    end

    -- return result
    RETURN @return

END
_

そして、それをどこでも使用します:
select [dbo].[f_convert_int_to_2_digits](<some int>)

0
Iván Sainz
SELECT
replace(str(month(DATEADD(month, -1, '2012-02-29')), 2),' ' , '0')
0
keisy