Consiglio su campo money,numeric,decimal

martedì 13 maggio 2008 - 18.32

trinity Profilo | Guru

Salve ragzzi,
ho letto i books on line ma la domanda la pongo ugualmente:

utilizzo sql server 2005 e devo gestire i campi importo ossia l'euro.
Sql fornisce il campo money che gestisce 4 valori dopo la virgola.
La mia domanda è la seguente: voi quale utilizzereste e qual'è il migliore tra il campo money,numeric e decimal per la mia situazione?

Tenete presente che utilizzo poi come compilatore vbnet.

Ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

TomClancy Profilo | Junior Member

probabilmente verrò disintegrato per quel che sto per dire.... io cmq preferisco il float e poi me lo gestisco nel software

alx_81 Profilo | Guru

>Salve ragzzi,
Ciao!

>ho letto i books on line ma la domanda la pongo ugualmente:
>utilizzo sql server 2005 e devo gestire i campi importo ossia l'euro.
>Sql fornisce il campo money che gestisce 4 valori dopo la virgola.
>La mia domanda è la seguente: voi quale utilizzereste e qual'è
>il migliore tra il campo money,numeric e decimal per la mia situazione?
>
>Tenete presente che utilizzo poi come compilatore vbnet.
Allora, sul VbNet utilizzerei il decimal, o al massimo il double.

Invece su database un money (8Bytes) è un decimal con 4 cifre dopo la virgola, così come uno smallmoney, che però occupa 4Bytes e quindi ha un range di valori più limitato. Quindi si tratta sempre di decimal ma con range diverso e 4 cifre fisse dopo la virgola. Considera che il decimal come minimo tiene 5Bytes.

Ma la scelta a mio avviso, la devi fare in base alla precisione che ti serve. Con l'euro ti bastano le 4 cifre dopo la virgola e quindi possono andare bene anche i tipi di dato valuta che SQL Server ti riserva (proprietari di SQL Server) e magari lo smallmoney che occupa meno spazio del suo fratello maggiore.
Se invece ti serve almeno un money, perchè non stai nel range di valori ammessi dallo smallmoney, puoi pensare di utilizzare un decimal con due cifre dopo la virgola, che potrebbe occupare meno. Insomma, devi sapere il valore massimo che andrai ad inserire e in base a quello, trovare il tipo di dato più piccolo che lo contiene. Meno occupa meglio è.

@TomClancy
> probabilmente verrò disintegrato per quel che sto per dire.... io cmq preferisco il float e poi me lo gestisco nel software
Disintegrato no, ma un appunto lo devo fare . il float ed il real, sono tipi di dato imprecisi. Vanno bene per i calcoli matematici o fisici ad esempio. Il loro limite , che è un vantaggio in certi casi, è avere la virgola mobile, il che non garantisce arrotondamenti precisi e sicuri da un punto di vistra strettamente monetario. Quindi io dico NO. Mai usare float e real per gli importi monetari.

Dai BOL:

"Approximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly."

>Ciao e grazie
Di nulla!
Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

trinity Profilo | Guru

Grazie mille del chiarimento

Ciaoooooo
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5