Microsoft SQL Server (UDF)
Fonction de conversion d'un nombre réel en caractères avec mise en forme.
Source / Exemple :
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE Function [dbo].[fctDec2ToStr] (@Num Dec(18, 2))
Returns Varchar(19)
/*
Cette fonction de conversion retourne une chaîne de caractères
comprenant la valeur du nombre réel passé en paramètre.
Sauf à arrondir un nombre, il est recommandé d'utiliser des types
décimaux identiques en entrée et en sortie.
Exemples :
-- Appel -- Résultat
Select dbo.fctDec2ToStr(1234567890123456) 12345678901234 (18 - 2 = 16 de chiffres max. devant la virgule)
Select dbo.fctDec2ToStr(12345678901234.12) 12345678901234,12 (Mise en forme usuelle)
Select dbo.fctDec2ToStr(.12) 0,12 (Idem)
Select dbo.fctDec2ToStr(.125) 0,13 (Arrondi dû à l'échelle décimale)
Begin
Declare @Pos Tinyint
Declare @DecVal Varchar(2)
Declare @Str Varchar(19)
-- Conversion en chaîne de caractères
Set @Str=Cast(@Num As Varchar(19))
-- Position du séparateur décimale
Set @Pos=Charindex('.', @Str, 1)
-- Cas triviaux
If @Pos is null
Return ''
Else If @Pos=0
Return @Str
-- Partie décimale
Set @DecVal=Substring(@Str, @Pos +1, Len(@Str) - @Pos)
-- Supprime les zéros inutiles après la virgule
While (Right(@DecVal, 1) = '0')
Set @DecVal=Left(@DecVal, Len(@DecVal) - 1)
-- Retourne un nombre entier
If @DecVal=''
Return Substring(@Str, 1, @Pos -1)
-- Retourne un nombre réel
Return Substring(@Str, 1, @Pos -1) + ',' + @DecVal
End
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE Function [dbo].[fctDec4ToStr] (@Num Dec(18, 4))
Returns Varchar(19)
/*
Cette fonction de conversion retourne une chaîne de caractères
comprenant la valeur du nombre réel passé en paramètre.
Sauf à arrondir un nombre, il est recommandé d'utiliser des types
décimaux identiques en entrée et en sortie.
Exemples :
-- Appel -- Résultat
Select dbo.fctDec4ToStr(12345678901234) 12345678901234 (18 - 4 = 14 de chiffres max. devant la virgule)
Select dbo.fctDec4ToStr(12345678901234.12) 12345678901234,12 (Mise en forme usuelle)
Select dbo.fctDec4ToStr(.1234) 0,1234 (Idem)
Select dbo.fctDec4ToStr(.12345) 0,1235 (Arrondi dû à l'échelle décimale)
Begin
Declare @Pos Tinyint
Declare @DecVal Varchar(4)
Declare @Str Varchar(19)
-- Conversion en chaîne de caractères
Set @Str=Cast(@Num As Varchar(19))
-- Position du séparateur décimale
Set @Pos=Charindex('.', @Str, 1)
-- Cas triviaux
If @Pos is null
Return ''
Else If @Pos=0
Return @Str
-- Partie décimale
Set @DecVal=Substring(@Str, @Pos +1, Len(@Str) - @Pos)
-- Supprime les zéros inutiles après la virgule
While (Right(@DecVal, 1) = '0')
Set @DecVal=Left(@DecVal, Len(@DecVal) - 1)
-- Retourne un nombre entier
If @DecVal=''
Return Substring(@Str, 1, @Pos -1)
-- Retourne un nombre réel
Return Substring(@Str, 1, @Pos -1) + ',' + @DecVal
End
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.