Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да форматирате числа със запетаи в SQL Server

SQL Server ни предоставя бърз и лесен начин за форматиране на числа със запетаи, поставени на съответното място. Например 1234.56 може да стане 1234,56 . Или може да стане 1.234,56 , ако това е локалът, който използвате.

Пример

Можем да използваме FORMAT() функция за форматиране на числа със запетаи. Когато използваме тази функция, ние предаваме числото и форматиращ низ. Низът за формат определя как числото ще бъде форматирано при връщане.

FORMAT() функцията връща форматирано низово представяне на числото въз основа на стойностите, които предоставяме.

Ето пример за демонстрация:

SELECT 
    FORMAT(123456.789, 'N') AS "Number",
    FORMAT(123456.789, 'P') AS "Percent",
    FORMAT(123456.789, 'C') AS "Currency";

Резултат:

+------------+----------------+-------------+
| Number     | Percent        | Currency    |
|------------+----------------+-------------|
| 123,456.79 | 12,345,678.90% | $123,456.79 |
+------------+----------------+-------------+

Този пример демонстрира три от стандартните низове с цифров формат:

  • Ако искаме само форматирания номер, можем да използваме N
  • Ако искаме да е форматиран като процент, можем да използваме P
  • За валута можем да използваме C .

SQL Server е достатъчно умен, за да знае текущия ви локал (въз основа на езика на текущата сесия) и форматира резултата според конвенциите на този локал. Това е важно, защото не всеки живее в държава, която използва запетая като разделител на хилядите и точка като разделител.

Освен това, FORMAT() функцията приема трети незадължителен аргумент „култура“, който ви позволява изрично да посочите локала.

Ето пример за това, което имам предвид:

SELECT 
    FORMAT(123456.789, 'N', 'de-de') AS "Number",
    FORMAT(123456.789, 'P', 'de-de') AS "Percent",
    FORMAT(123456.789, 'C', 'de-de') AS "Currency";

Резултат:

+------------+-----------------+--------------+
| Number     | Percent         | Currency     |
|------------+-----------------+--------------|
| 123.456,79 | 12.345.678,90 % | 123.456,79 € |
+------------+-----------------+--------------+

В този случай посочвам de-de като култура, което означава, че резултатите ще бъдат форматирани според немските конвенции. Можем да видим, че точките се използват като разделител на групата, а запетаята се използва за десетичния разделител.

Ако третият аргумент е пропуснат, се използва езикът на текущата сесия.

Стрингове за персонализиран формат

Възможно е също да използвате спецификатори на персонализиран формат, за да създадете свои собствени персонализирани форматни низове. Например # символът е цифрен заместител, 0 е нулев заместител, запетаята (, ) е заместител на разделителя на групата и точката (. ) е заместител за десетичния разделител.

Това е вярно независимо от използвания локал – SQL Server ще определи кои знаци да използва за разделителите на групата и десетичната запетая въз основа на текущия локал.

Пример:

SELECT 
    FORMAT(123456.789, '###,###,###.##', 'en-us') AS "US English",
    FORMAT(123456.789, '###,###,###.##', 'de-de') AS "German";

Резултат:

+--------------+------------+
| US English   | German     |
|--------------+------------|
| 123,456.79   | 123.456,79 |
+--------------+------------+

И в двата случая използвах един и същ форматен низ, но SQL Server върна груповите и десетичните разделители, които бяха приложими към посочения локал (който беше посочен с третия аргумент „култура“).

В горния пример форматираният низ включва повече цифри от действителното число. Независимо от това, SQL Server избра да не връща водещи нули. Това е така, защото използвахме # спецификатор на формат.

Ако искаме SQL Server да връща водещи нули, можем да използваме 0 спецификатор на формат:

SELECT 
    FORMAT(123456.789, '000,000,000.00', 'en-us') AS "US English",
    FORMAT(123456.789, '000,000,000.00', 'de-de') AS "German";

Резултат:

+----------------+----------------+
| US English     | German         |
|----------------+----------------|
| 000,123,456.79 | 000.123.456,79 |
+----------------+----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Риск от сблъсък на UUID, използвайки различни алгоритми

  2. Където стойност в колона, съдържаща стойности, разделени със запетая

  3. Използване на кортежи в SQL IN клауза

  4. Какво е форматен низ в SQL Server?

  5. Как да отпечатате VARCHAR(MAX) с помощта на Print Statement?