W MariaDB, FORMAT()
to wbudowana funkcja łańcuchowa, która formatuje i zwraca podaną liczbę jako łańcuch.
Wymaga dwóch argumentów i akceptuje opcjonalny trzeci argument. Pierwsza to liczba, którą chcesz sformatować, druga to pozycja dziesiętna, a (opcjonalnie) trzecia to ustawienia regionalne.
Składnia
Składnia wygląda tak:
FORMAT(num, decimal_position[, locale])
Gdzie num
to liczba, decimal_position
to liczba miejsc dziesiętnych, do których należy zaokrąglić liczbę, oraz locale
jest opcjonalnym ustawieniem narodowym używanym do formatowania liczby (różne ustawienia regionalne używają różnych konwencji do formatowania liczb).
Przykład
Oto podstawowy przykład:
SELECT FORMAT(1234.5678, 2);
Wynik:
+----------------------+ | FORMAT(1234.5678, 2) | +----------------------+ | 1,234.57 | +----------------------+
Tutaj, FORMAT()
dodano przecinek dla separatora tysięcy. Zaokrąglił również liczbę do dwóch miejsc po przecinku (ponieważ jako drugi argument podałem 2).
Usuń część ułamkową
Aby usunąć część ułamkową (i związaną z nią kropkę dziesiętną), użyj 0
(zero) jako drugi argument:
SELECT FORMAT(1234.5678, 0);
Wynik:
+----------------------+ | FORMAT(1234.5678, 0) | +----------------------+ | 1,235 | +----------------------+
Dodawanie miejsc dziesiętnych
Jeśli drugi argument jest liczbą większą niż liczba miejsc dziesiętnych w pierwszym argumencie, do wyniku dodawane są zera, tak aby odzwierciedlał żądaną liczbę miejsc dziesiętnych:
SELECT
FORMAT(1234, 2),
FORMAT(1234.56, 4),
FORMAT(1234.56, 8);
Wynik:
+-----------------+--------------------+--------------------+ | FORMAT(1234, 2) | FORMAT(1234.56, 4) | FORMAT(1234.56, 8) | +-----------------+--------------------+--------------------+ | 1,234.00 | 1,234.5600 | 1,234.56000000 | +-----------------+--------------------+--------------------+
Określ ustawienia regionalne
Możesz opcjonalnie przekazać trzeci argument, aby określić ustawienia regionalne używane do formatowania.
Przykład:
SELECT
FORMAT(1234567.8912, 2, 'da_DK') AS "da_DK",
FORMAT(1234567.8912, 2, 'rm_CH') AS "rm_CH",
FORMAT(1234567.8912, 2, 'es_BO') AS "es_BO",
FORMAT(1234567.8912, 2, 'ar_SA') AS "ar_SA";
Wynik:
+--------------+--------------+------------+------------+ | da_DK | rm_CH | es_BO | ar_SA | +--------------+--------------+------------+------------+ | 1.234.567,89 | 1'234'567,89 | 1234567,89 | 1234567.89 | +--------------+--------------+------------+------------+
Argumenty nieliczbowe
FORMAT()
tylko formatuje liczby. Dostarczenie ciągu, na przykład, daje w wyniku 0
zostanie zwrócony. Jednak nadal jest sformatowany do określonego miejsca dziesiętnego:
SELECT
FORMAT("Twenty five", 0),
FORMAT("Twenty five", 2),
FORMAT("Twenty five", 4);
Wynik:
+--------------------------+--------------------------+--------------------------+ | FORMAT("Twenty five", 0) | FORMAT("Twenty five", 2) | FORMAT("Twenty five", 4) | +--------------------------+--------------------------+--------------------------+ | 0 | 0.00 | 0.0000 | +--------------------------+--------------------------+--------------------------+
Argumenty zerowe
Podanie null
ponieważ jeden z pierwszych dwóch argumentów daje wynik null
:
SELECT
FORMAT(null, 2),
FORMAT(25, null);
Wynik:
+-----------------+------------------+ | FORMAT(null, 2) | FORMAT(25, null) | +-----------------+------------------+ | NULL | NULL | +-----------------+------------------+
Ale przekazanie null
ponieważ trzeci argument nie wpływa na wynik:
SELECT FORMAT(25, 2, null);
Wynik:
+---------------------+ | FORMAT(25, 2, null) | +---------------------+ | 25.00 | +---------------------+
Podawanie tylko jednego argumentu
Podanie pojedynczego argumentu skutkuje błędem:
SELECT FORMAT(1234.56);
Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Nie dostarczaj żadnych argumentów
Wywołanie FORMAT()
bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT FORMAT();
Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1