Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

4 funkcje do sformatowania liczby do 2 miejsc dziesiętnych w SQL Server

Używając T-SQL z SQL Server, możemy formatować liczby przy użyciu różnych metod, w zależności od pożądanego formatu.

Poniżej znajdują się cztery funkcje, których można użyć do sformatowania liczby do dwóch miejsc po przecinku w SQL Server.

CAST() Funkcja

Najbardziej oczywistym sposobem na to jest konwersja liczby na typ dziesiętny. Dwie funkcje, które mogą to za nas zrobić, to CAST() i CONVERT() .

Oto przykład użycia CAST() :

SELECT CAST(275 AS DECIMAL(5, 2));

Wynik:

275.00

Możemy użyć tej metody, nawet jeśli liczba jest już wartością dziesiętną, ale z większą liczbą miejsc dziesiętnych.

Należy jednak pamiętać, że jeśli zmniejszasz liczbę miejsc dziesiętnych z liczby z więcej niż dwoma miejscami dziesiętnymi, możesz skończyć z zaokrągleniem drugiego miejsca dziesiętnego w górę:

SELECT CAST(275.4567 AS DECIMAL(5, 2));

Wynik:

275.46

CONVERT() Funkcja

Tutaj używamy CONVERT() zrobić to samo – zamienić liczbę na dziesiętną:

SELECT CONVERT(DECIMAL(5, 2), 275);

Wynik:

275.00

FORMAT() Funkcja

Innym sposobem sformatowania liczby z dwoma miejscami po przecinku jest użycie FORMAT() funkcja:

SELECT FORMAT(275, 'N2');

Wynik:

275.00

Ta funkcja faktycznie konwertuje liczbę na ciąg, więc technicznie wynik nie jest typem liczbowym.

N2 część jest określana jako ciąg formatu. W tym przypadku N dotyczy numeru i 2 dotyczy liczby miejsc dziesiętnych (możesz ją zwiększyć lub zmniejszyć w zależności od potrzeb).

Tej samej techniki można użyć do zmniejszenia liczby miejsc dziesiętnych do dwóch, z liczby z większą liczbą miejsc dziesiętnych:

SELECT FORMAT(275.4567, 'N2');

Wynik:

275.46

Została zaokrąglona w górę, tak jak wtedy, gdy przekonwertowaliśmy liczbę w innym przykładzie.

Innym sposobem na to jest użycie niestandardowego ciągu formatu. Ciągi formatu niestandardowego umożliwiają określenie formatu, który może nie być obsługiwany przez ciąg formatu standardowego.

Oto przykład użycia niestandardowych ciągów formatu:

SELECT 
    FORMAT(275, '###.##') AS "###.##",
    FORMAT(275, '000.00') AS "000.00",
    FORMAT(275.4567, '###.##') AS "###.##",
    FORMAT(275.4567, '000.00') AS "000.00";

Wynik:

+----------+----------+----------+----------+
| ###.##   | 000.00   | ###.##   | 000.00   |
|----------+----------+----------+----------|
| 275      | 275.00   | 275.46   | 275.46   |
+----------+----------+----------+----------+

Widzimy, że istnieje różnica między używaniem # i 0 w ciągu formatu. # specyfikator formatu pomija wszelkie nieznaczące zera, podczas gdy 0 specyfikator formatu nie.

Ale być może co ważniejsze (dla celów tego artykułu), 0 specyfikator formatu umożliwia dodawanie nieznacznych zer, jeśli nie ma ich w oryginalnej liczbie. Dlatego może być użyty do dodania dwóch miejsc po przecinku do liczby całkowitej (jak widać w powyższym przykładzie).

STR() Funkcja

Innym sposobem sformatowania liczby do dwóch miejsc po przecinku jest użycie STR() funkcja:

SELECT STR(275, 6, 2);

Wynik:

275.00

Ta funkcja zwraca dane znakowe przekonwertowane z danych liczbowych. Dane znakowe są wyrównane do prawej, z określoną długością i dokładnością dziesiętną.

Pierwszy argument jest wyrażeniem typu danych typu float z kropką dziesiętną.

Drugi argument to całkowita długość. Obejmuje to kropkę dziesiętną, znak, cyfry i spacje. Wartość domyślna to 10.

Trzeci argument to liczba miejsc na prawo od przecinka dziesiętnego. Musi być mniejsza lub równa 16.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. błąd, ciąg lub dane binarne zostaną obcięte podczas próby wstawienia

  2. Kopia zapasowa SQL Server 2017 -3

  3. dołączona baza danych jest tylko do odczytu

  4. Jak sprawdzić zgodność bazy danych SQL Server po przestarzałej funkcji sp_dbcmptlevel?

  5. Datetime T-SQL zaokrąglone do najbliższej minuty i najbliższych godzin przy użyciu funkcji