Group: microsoft.public.it.sql




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