Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/02/2011, 12h56   #1
Invité de passage
 
Homme
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
Par défaut CONVERT int vers varchar

Bonjour,

J'ai une Transaction SQL avec une variable int et une variable varchar.
Je souhaite que ma variable varchar ait toujours le meme nombre de caractere, à savoir 5.
Toutefois si mon int à une valeur = 2 un
SET @TempVarchar = @TempInt me renvoi dans @TempVarchar "2" alors que je souhaiterais "00002".
Si @TempInt = 15 alors @TempVarchar = "00015"

J'ai bien tenté d'utiliser CONVERT mais je bloque.

Si quelqu'un a une idée de genie !
Merci de vos réponses et de votre lecture.

Cdt,
Wiwi31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 14h14   #2
Membre éprouvé
 
Homme Hamid MIRA
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Hamid MIRA
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2003
Messages : 177
Points : 413
Points : 413
Ci-dessous une fonction utilisateur T-SQL, nommée FC_U_LPAD
Elle permet Compléter à gauche par le "Motif" précisé (@PadChar) jusqu'à atteindre la "Longueur" précisée (@Longueur)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE FUNCTION dbo.FC_U_LPAD( 
   @Str VARCHAR(8000), 
   @Longueur INT,  
   @PadChar CHAR(1) = ' '
   )
   RETURNS varchar(8000)
   AS
BEGIN   
   DECLARE @StrPadded varchar(8000),        
   @LenStr INT    
   SET @LenStr = LEN(@Str)       
   IF  @Longueur > @LenStr 
	 SET @StrPadded = REPLICATE(@PadChar, @Longueur - @LenStr)  + @Str
   ELSE 
     SET @StrPadded = SUBSTRING(@Str,1,@Longueur)    
   RETURN @StrPadded 
END
GO
-- Exemple d’utilisation de la fonction FC_U_LPAD

Code :
1
2
3
4
5
SELECT dbo.FC_U_LPAD(CAST(2 AS varchar(8000)), 5, '0') 
Résultat : 00002 
 
SELECT dbo.FC_U_LPAD(CAST(15 AS varchar(8000)), 5, '0') 
Résultat : 00015
A+
hmira est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/02/2011, 17h59   #3
Membre Expert
 
Homme
Développeur java, access, sql server
Inscription : octobre 2005
Messages : 851
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Développeur java, access, sql server
Secteur : Industrie

Informations forums :
Inscription : octobre 2005
Messages : 851
Points : 1 302
Points : 1 302
Petit bricolage pas cher :
Code :
1
2
3
4
DECLARE @MaVar int, @TempVarchar varchar(5)
SET @MaVar = 15
SET @TempVarchar = RIGHT(@MaVar+100000,5)
print @TempVarchar
(sans même utiliser CONVERT)

Dans une requête :
Code :
SELECT RIGHT(@MaVar+100000,5)
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser.
First, make it work. Then, make it fast. Finally, make it user-friendly.
Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich.
Népomucène est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/02/2011, 20h19   #4
Invité de passage
 
Homme
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
Merci pour vos réponses claires et fonctionnelles !
J'avais pas pensé du tout a çà ! et surtout vu ca comme ca.

Bonne soirée.
Wiwi31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 09h45   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 951
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 951
Points : 17 770
Points : 17 770
Ou encore :
Code :
SELECT REPLICATE(CAST(@TempVarchar AS INT), 5 - LEN(CAST(@TempVarchar AS INT))
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h11.


 
 
 
 
Partenaires

Hébergement Web