|
|
Subject: Money formato Euro
From: Lorenzo Benaglia
Date: 5/10/2007 5:26:01 PM
Al wrote:
> dimenticavo: vorrei evitare di farlo lato client
Ehm... che formato vorresti?
Puoi farci un esempio?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
Subject: Money formato Euro
From: Lorenzo Benaglia
Date: 5/10/2007 5:58:02 PM
Al wrote:
> 99.234.345,00
Formattazioni di questo tipo andrebbero fatte lato client dato che dipendono
dalle regional options impostate su ogni singolo PC.
Avrebbe poco senso forzare un certo formato lato server dato che darebbe
origine ad incongruenze nel caso in cui il client utilizzasse impostazioni
differenti rispetto al server.
Se malgrado tutto ciò volessi forzare una formattazione lato server, ti
preannuncio che SQL Server utilizza sempre il punto "." come separatore
decimale e la virgola "," come separatore delle migliaia, indipendentemente
dalla lingua associata alla login utilizzata per connettersi all'istanza.
Se provi a castare a stringa una colonna money mediante la funzione CONVERT,
puoi specificare lo stile 1 che però utilizza i separatori riportati poco
sopra.
Quindi occorre "ingegnarsi" per cambiare formattazione.
USE tempdb;
CREATE TABLE dbo.myPrices(
Price money NOT NULL
);
INSERT dbo.myPrices VALUES(1);
INSERT dbo.myPrices VALUES(10);
INSERT dbo.myPrices VALUES(100.99);
INSERT dbo.myPrices VALUES(234.06);
INSERT dbo.myPrices VALUES(12345.3);
INSERT dbo.myPrices VALUES(67890123.1234);
SELECT
Price -- SSMS rispecchia le Regional Options del mio account Windows
(Italiano)
, CONVERT(varchar, Price, 1) AS USA -- Formato SQL Server
, STUFF(REPLACE(CONVERT(varchar, Price, 1), ',', '.'),
LEN(CONVERT(varchar, Price, 1)) - 2, 1, ',') AS ITA
FROM dbo.myPrices;
/* Output:
Price USA ITA
--------------------- ------------------------------ ---------------
1,00 1.00 1,00
10,00 10.00 10,00
100,99 100.99 100,99
234,06 234.06 234,06
12345,30 12,345.30 12.345,30
67890123,1234 67,890,123.12 67.890.123,12
(6 row(s) affected)
*/
DROP TABLE dbo.myPrices;
Ad ogni modo ritengo che sia una PESSIMA idea formattare lato server date e
valute.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
|