Najlepszy sposób na umieszczenie przecinków w dużych liczbach

10

Rozpocząłem nową pracę, która polega na przyglądaniu się dużej grupie. Czy istnieje prosty sposób dodania przecinków do pola intlub, decimalaby był czytelny?

Na przykład SQL Server wyświetla kolumnę po lewej stronie, ale dla własnego zdrowia potrzebuję, aby wyglądała jak ta po prawej:

2036150 -> 2,036,150  

... czy musiałbym napisać coś ohydnego

left(right(vandalized_data),6),3) + ',' + right(left(vandalized_data),6),3)

funkcjonować?

Idealną rzeczą byłyby przecinki w siatce wyświetlania, a następnie zwykłe liczby całkowite na wyjściu.

James
źródło

Odpowiedzi:

15

Jeśli korzystasz z SQL Server 2012+ i chcesz to zrobić (bez miejsc dziesiętnych):

SELECT FORMAT(2036150, N'N0')

Jeśli korzystasz z wcześniejszej wersji, musisz przeskoczyć przez kilka obręczy:

SELECT REPLACE(CONVERT(NVARCHAR(30), CAST((2036150) AS MONEY), 1), N'.00', N'')
Erik Darling
źródło
18

Funkcja FORMAT TSQL może to zrobić. NA PRZYKŁAD

select format(1232131312342132123.2222,'0,###.##')

wyjścia

1,232,131,312,342,132,123.22

Jeśli chcesz użyć innego separatora, nadal używasz, ,który ma specjalne znaczenie w łańcuchu formatu .Net, a następnie zamieniasz go na ,coś innego. NA PRZYKŁAD:

select replace(format(123445678.2222,'#,###.##'),',','_')

wyjścia

123_445_678.22
David Browne - Microsoft
źródło