2012-12-13 19 views
14

Ho una colonna denominata TotalArea e il suo formato è numeric (12,2).SQL Server 2008 separatore di migliaia per una colonna

voglio che per visualizzare i numeri con un separatore delle migliaia così quando ho

select TotalArea from table 

per mostrarmi un formato come 1,234.00.

Come potrei farlo? Grazie!

+0

Possibile duplicato di [Come si formatta un numero con virgole in T-SQL?] (Https://stackoverflow.com/questions/4377352/how-do-i- formato-a-numero-con-virgole-in-t-sql) –

risposta

26

provare in questo modo:

select replace(convert(varchar,convert(Money, TotalArea),1),'.00','') 
from table 

o

SELECT CAST(CONVERT(varchar, CAST(123456 AS Money), 1) AS varchar) 
from table 
+1

+1 beca usarlo è corretto, ma per favore non farlo. @MattWhitfield ha assolutamente inchiodato. – tomfanning

+1

Fai questo solo se il tuo numero è in un tipo di denaro. @dasiimwe ha la risposta migliore. I valori float generano errori – Dave

+0

I valori float vengono trasmessi correttamente e, se sei bloccato con SQL Server 2008, questa è probabilmente la scelta migliore. 'declare @f float = 12345.67890; SELECT CONVERT (varchar, CAST (@f AS Money), 1) ' – Rob

18

Formattazione di numeri per la visualizzazione è qualcosa che dovrebbe essere fatto nello strato di visualizzazione, e non all'interno del database. Quindi, in qualunque applicazione questi dati finiscano per essere usati, dovresti formattarlo lì. Management Studio, sfortunatamente, non offre molto controllo in questo senso.

+0

Che dire se si desidera la formattazione dei dati XML standardizzata? Gestisco gli standard di formattazione nel database, e questo si diffonde a tutti i client, sia esso web, mobile, ecc. E BTW, FORMAT (numero, '#, 0') ti fornisce i separatori, non sono sicuro del perché qualcuno dovrebbe usare replace (convert (convertire()))???? Non efficiente a mio avviso quando faccio record 1M + ... –

+0

@ArvinAmir - Direi che la formattazione dell'XML è necessaria solo per gli esseri umani - i computer la consumano allo stesso modo, indipendentemente dal fatto che abbia o meno un po 'di spazio bianco. Quindi direi che una sorta di formattazione deve ancora essere fatta al punto di visualizzazione. –

-1

Prova questo Un fantastico esempio.

SELEZIONA CAST (CONVERT (varchar, CAST (123456 come denaro), 1) come VARCHAR)

+1

Quasi identico alla risposta di Parado e quasi un anno dopo - *** risposta duplicata *** – Kiquenet

14
SELECT FORMAT(12345,'#,0.00'); 

SELECT FORMAT(TotalArea,'#,0.00') from table; 

Riferimento: https://msdn.microsoft.com/en-us/library/ee634206(v=sql.105).aspx

+0

Questa è la migliore risposta in questo modo - SELEZIONA FORMATO (2222222222222222222222222, '#, 0,00') – Dave

+0

Supportato solo da SQL Server 2012 in poi . https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b4090663-6805-46f5-b84f-81e5eb90da30/format-works-in-2012-but-not-in-2008-what-am- i-missing? forum = transactsql –

+0

Grazie, molto utile –

0

utilizzare questo semplice .... formato (CHART_OF_ITEM. UNIT_PRIC_W_TAX, '#, 0.00') AS UNIT_PRICE_W_TAX

Problemi correlati