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.