SQL SERVER - CONVERSION D'UN NOMBRE RÉEL (TYPE DÉCIMALE) EN CARACTÈRES AVEC MISE

Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 - 6 mai 2005 à 12:54
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009 - 9 mai 2005 à 16:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31197-sql-server-conversion-d-un-nombre-reel-type-decimale-en-caracteres-avec-mise-en-forme

FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
9 mai 2005 à 16:30
Conclusion : tester... toujours tester avant de critiquer.
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
9 mai 2005 à 16:26
Toutefois la conversion n'est pas sans incidence !

Petite différence à signaler :

select replace (cast ( cast(12345678.2 as real) as varchar), '.', ',') -- retourne 1,23457e+007
select dbo.fn_Dec2ToStr(12345678.2) --retourne 12345678,2
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
9 mai 2005 à 16:08
OK, pour la conversion en real (mauvaise lecture)
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
9 mai 2005 à 15:47
Encore un petit effort... je ne veux pas des zéros inutiles après la virgule !
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
9 mai 2005 à 15:41
Il suffit de le dire ^^

select replace (cast ( cast(1.20 as real) as nvarchar), '.', ',')

et hop ! :o)
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
9 mai 2005 à 15:28
Effectivement, sauf que je veux en retour la valeur avec la virgule et sans le niveau de précision (échelle) car, dans mon cas précis, j'effectue un import direct à partir d'Excel (données externes).

Différences :

select cast(1.20 as varchar(19)) -- retourne '1.20'

select dbo.fn_Dec2ToStr(1.20) -- retourne '1,2'

Alors, effectivement, c'est très spécifique !
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
6 mai 2005 à 12:57
ah oui, et pour transformer ton chiffre en 12,8 tu peux faire :

cast ( cast(.125 as dec(18,2)) as nvarchar)

;o)
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
6 mai 2005 à 12:54
J'ai mis 3, la source est intéressante, mais si tu fais :

cast (monnombre as nvarchar)

c'est plus efficace (ou alors j'ai rien compris :) )
Rejoignez-nous