Podczas pracy z Postgresem możesz użyć to_char()
funkcja do wyprowadzania liczb w podanym formacie.
Działa to tak, że podajesz dwa argumenty. Pierwszym argumentem jest liczba do sformatowania. Drugi argument określa sposób jego formatowania.
Zwracana wartość to tekst .
W zależności od wymagań możesz chcieć przekonwertować liczbę na odpowiedni typ danych, na przykład za pomocą cast()
funkcja.
Przykłady obu metod znajdują się poniżej.
Przykład
Oto podstawowy przykład do zademonstrowania.
SELECT to_char(10, '99.99');
Wynik:
10.00
9
s faktycznie mają szczególne znaczenie w tym kontekście. Ten znak jest jednym z prawidłowych wzorców szablonów, z których może składać się ciąg formatu podczas formatowania liczb.
W przypadku 9
, określa pozycję cyfry, ale jeśli jest to początkowe zero, zostanie zastąpione spacją, a jeśli jest to końcowe zero i określono tryb wypełniania, zostanie ono usunięte.
Jeśli usunę część dziesiętną i część ułamkową sekund, otrzymam inny wynik.
SELECT to_char(10, '99');
Wynik:
10
Upuść wiodące zera
Możesz zastąpić 9
z 0
jeśli chcesz pominąć początkowe i końcowe zera, nawet jeśli są nieistotne.
Oto przykład, który pokazuje różnicę między nimi.
SELECT
to_char(0010, '9999') AS "9999",
to_char(0010, '0000') AS "0000";
Wynik:
9999 | 0000 -------+------- 10 | 0010
Wzorce szablonów
Jak widać w poprzednich przykładach, ciąg formatu składa się z co najmniej jednego wzorca szablonu.
Na przykład 9999
to ciąg formatu, który składa się z czterech wzorców szablonów – z których każdy ma wartość 9
.
Miejsce dziesiętne to kolejny wzorzec szablonu.
Mogłem użyć D
zamiast miejsca dziesiętnego. Używa aktualnego ustawienia regionalnego do właściwego formatowania.
SELECT
to_char(10, '99.99') AS "99.99",
to_char(10, '99D99') AS "99D99";
Wynik:
99.99 | 99D99 --------+-------- 10.00 | 10.00
Aby uzyskać pełną listę wzorców szablonów i modyfikatorów, zobacz Wzorce szablonów i modyfikatory formatowania liczb w Postgresie.
Modyfikatory wzorców szablonów
Istnieje również kilka modyfikatorów, których można użyć wraz ze wzorem szablonu. Zmieniają one sposób formatowania danych wyjściowych, w zależności od użytego modyfikatora.
W szczególności istnieją trzy modyfikatory, których można używać z formatowaniem liczb.
Modyfikator | Opis |
---|---|
FM przedrostek | tryb wypełniania (pomijanie końcowych zer i wypełniania pustych miejsc) |
TH przyrostek | sufiks liczby porządkowej wielkich liter |
th przyrostek | sufiks liczby porządkowej małymi literami |
Zauważ, że pierwszy jest dodawany jako przedrostek do wzorca szablonu, a dwa pozostałe jako przyrostek.
Liczby porządkowe
Powszechnym wymogiem jest przekształcenie liczby na jej liczbę porządkową. Możemy użyć TH
lub th
w tym celu, w zależności od tego, czy chcemy, aby sufiks był wielkimi czy małymi literami.
Oto przykład.
SELECT to_char(03, 'FM99th');
Wynik:
3rd
W tym przypadku również użyłem FM
aby pominąć wszelkie spacje i końcowe zera.
Oto porównanie korzystania z FM
i pomijając to:
SELECT
to_char(03, '99th') AS "99th",
to_char(03, 'FM99th') AS "FM99th";
Wynik:
99th | FM99th -------+-------- 3rd | 3rd
Jeśli przyjrzysz się uważnie, pierwsza kolumna ma wiodące spacje, podczas gdy druga kolumna nie.
Waluta
Innym powszechnym wymogiem jest wypisanie liczby w danej walucie.
W takim przypadku możemy użyć L
wzór szablonu, aby wyświetlić symbol waluty uwzględniający ustawienia regionalne.
SELECT to_char(03, 'LFM99D00');
Wynik:
$3.00
Podpisane numery
Istnieją również wzory szablonów dla podpisanych numerów.
Oto przykład.
SELECT to_char(27, 'S99');
Wynik:
+27
Tutaj użyłem S
aby dodać znak uwzględniający lokalizację, który jest zakotwiczony do numeru.
W tym przypadku była to liczba dodatnia. Oto kolejny przykład, który używa wartości ujemnej.
SELECT to_char(-27, 'S99');
Wynik:
-27
Istnieje kilka innych wzorców szablonów, których można użyć dla liczb ze znakiem.
Aby zapoznać się z przykładami, zobacz Dołącz znak plus/minus do numeru w Postgresie.
Jak wspomniano, zapoznaj się z wzorcami szablonów i modyfikatorami formatowania liczb w Postgresie, aby uzyskać pełną listę modyfikatorów szablonów, których można używać podczas formatowania liczb.
Typ danych
Jak wspomniano, to_char()
funkcja wyświetla wynik jako tekst .
W zależności od wymagań może być lepiej przekonwertować liczbę na bardziej odpowiedni typ danych.
Oto przykład, który konwertuje liczbę na dane pieniędzy typ.
SELECT cast(10 as money);
Wynik:
$10.00