2012-12-13 18 views
14

mam kolumnę o nazwie TotalArea i jego format jest numeric (12,2).SQL Server 2008 Separator tysięcy dla kolumny

chcę aby wyświetlić numery z separatora tysięcy więc kiedy

select TotalArea from table 

pokazać mi formatu jak 1,234.00.

Jak mogę to zrobić? Dzięki!

+0

Możliwy duplikat [Jak sformatować liczbę przecinkami w T-SQL?] (Https://stackoverflow.com/questions/4377352/how-do-i- format-a-number-with-commas-in-t-sql) –

Odpowiedz

26

Spróbuj w ten sposób:

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

lub

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

+1 beca użyj go poprawnie, ale nie rób tego. @MattWhitfield ma to absolutnie przybity. – tomfanning

+1

Wykonuj to tylko wtedy, gdy Twój numer jest przypisany do typu pieniężnego. @dasiimwe ma lepszą odpowiedź. Wartości zmiennoprzecinkowe będą błędne – Dave

+0

Wartości zmiennoprzecinkowe są rzucane dobrze, a jeśli utkniesz w SQL Server 2008, to jest to najlepszy wybór. 'declare @f float = 12345.67890; WYBIERZ KONWERTER (varchar, CAST (@f AS Money), 1) ' – Rob

18

Formatowanie liczb dla wyświetlacza jest coś, co powinno być zrobione w warstwie wyświetlacza, a nie w bazie danych. Tak więc, w jakiejkolwiek aplikacji dane te zostaną użyte, należy ją sformatować. Management Studio niestety nie oferuje zbyt dużej kontroli w tym zakresie.

+0

A jeśli chcesz standardowego formatowania danych XML? Zarządzam standardami formatowania w bazie danych, a to rozchodzi się do wszystkich klientów, czy to internetowych, mobilnych itd. A BTW, FORMAT (numer, "#, 0") daje ci separatory, nie wiesz, dlaczego ktokolwiek użyłby zamiennika (przekonwertuj (konwertować()))???? Nieefektywne w mojej opinii przy wykonywaniu 1M + rekordów ... –

+0

@ArvinAmir - Twierdziłbym, że formatowanie XML jest konieczne tylko dla ludzi - komputery konsumują je tak samo, bez względu na to, czy ma w sobie spore spacje. Powiedziałbym więc, że formatowanie nadal powinno być wykonywane w miejscu wyświetlania. –

-1

próbować ten jeden niesamowity przykład.

SELECT CAST (CONVERT (VARCHAR, CAST (123456 AS money), 1) jako varchar)

+1

Niemal identyczna odpowiedź Parado i prawie rok później - *** powielać odpowiedź *** – Kiquenet

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

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

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

+0

To najlepsza odpowiedź, jak to działa - wybrać format (2222222222222222222222222, „#, 0,00”) – Dave

+0

Obsługiwane tylko z SQL Server 2012 roku . 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

Dzięki, bardzo pomocne –

0

ten prosty .... Format (CHART_OF_ITEM. UNIT_PRIC_W_TAX, '#, 0.00') AS UNIT_PRICE_W_TAX

Powiązane problemy