web-dev-qa-db-fra.com

Format T-SQL entier en chaîne à 2 chiffres

Je ne trouve pas de moyen simple de faire cela dans T-SQL.

J'ai par exemple une colonne (SortExport_CSV) qui renvoie un entier compris entre '2' et 90 . Si le nombre enregistré est un chiffre unique, il me faut le convertir en chaîne de 2 chiffres commençant par 0 . J'ai essayé d'utiliser CAST mais je ne sais plus comment afficher le style dans le format préféré (0 #)

Bien sûr, il est facile de faire cela en amont (SSRS, MSAccess, Excel, etc.), mais dans ce cas, je n’ai pas d’intérieur et je dois fournir au groupe de données brutes la chaîne à 2 chiffres déjà formatée.

32
James Polhemus
select right ('00'+ltrim(str( <number> )),2 )
52
Sparky
SELECT RIGHT('0' + CAST(sortexport_csv AS VARCHAR), 2)
FROM your_table
18
LukeH

Vous pouvez utiliser la fonction de format intégrée de T-SQL:

declare @number int  = 1
select format (@number, '0#')
15
Alex

Vous faites tous trop de travail:

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

Convertissez la valeur en chaîne, ajoutez un zéro devant celle-ci (pour qu'il s'agisse de deux caractères arborescents) et obtenez le dernier en caractères:

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

Tu pourrais essayer ça

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

cela devrait aider

2
Yasser

Un autre exemple:

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

Voici une petite fonction qui laisse la valeur de pad avec un caractère de remplissage donnéVous pouvez spécifier le nombre de caractères à compléter.

   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

Appeler :

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

voici

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

devrait retourner 02

0
Pratap .R

essayer

right('0' + convert(varchar(2), @number),2)
0
Santiago Cepas
SELECT
replace(str(month(DATEADD(month, -1, '2012-02-29')), 2),' ' , '0')
0
keisy

Essaye ça

--Générer le nombre de 2 à 90

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

--Programme formatant le nombre en fonction de la longueur

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

Sortie partielle:

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