Sql server - conversion d'un nombre réel (type décimale) en caractères avec mise en forme

Contenu du snippet

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 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

A voir également

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.