PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

2 sposoby na dodanie wiodących zer w PostgreSQL

W PostgreSQL możemy użyć TO_CHAR() funkcja dodawania wiodących zer do liczby. Funkcja konwertuje liczbę na ciąg znaków, używając (opcjonalnego) określonego przez nas formatu.

Inną opcją jest użycie LPAD() funkcja dopełniania liczby wiodącymi zerami.

TO_CHAR() Funkcja

Używając TO_CHAR() funkcji, użyj 0 element formatu zawierający początkowe i/lub końcowe zera.

Przykład:

SELECT TO_CHAR(7, 'fm000');

Wynik:

007

Oto porównanie z 9 element formatu:

SELECT 
    TO_CHAR(7, 'fm999') AS "9",
    TO_CHAR(7, 'fm000') AS "0";

Wynik:

 9 |  0  
---+-----
 7 | 007

Liczba zer wiodących jest określona przez liczbę 0 elementy formatu i ilość cyfr w liczbie:

SELECT 
    TO_CHAR(77, 'fm0') AS "r1",
    TO_CHAR(77, 'fm00000') AS "r2",
    TO_CHAR(777, 'fm00000') AS "r3",
    TO_CHAR(7777, 'fm00000') AS "r4",
    TO_CHAR(77777, 'fm00000') AS "r5";

Wynik:

 r1 |  r2   |  r3   |  r4   |  r5   
----+-------+-------+-------+-------
 #  | 00077 | 00777 | 07777 | 77777

fm modyfikator formatu pomija wszelkie początkowe i/lub końcowe dopełnienie, które może zostać uwzględnione w wyniku. Na przykład, gdy liczba jest ujemna, przedrostkiem jest znak minus. Ale gdy liczba jest dodatnia, nie uwzględnia się żadnego znaku i pojawia się spacja w miejscu, w którym znajdowałby się znak plus.

Oto przykład, który to zademonstruje:

SELECT 
    TO_CHAR(-7, '000') AS "Minus Sign",
    TO_CHAR(7, '000') AS "Padded",
    TO_CHAR(7, 'fm000') AS "Not Padded";

Wynik:

 Minus Sign | Padded | Not Padded 
------------+--------+------------
 -007       |  007   | 007

LPAD() Funkcja

Alternatywnie możemy użyć LPAD() funkcja dopełniania liczb wiodącymi zerami:

SELECT LPAD('7', 3, '0');

Wynik:

007

Inny przykład:

SELECT 
    LPAD('77', 1, '0') AS "r1",
    LPAD('77', 5, '0') AS "r2",
    LPAD('777', 5, '0') AS "r3",
    LPAD('7777', 5, '0') AS "r4",
    LPAD('77777', 5, '0') AS "r5";

Wynik:

 r1 |  r2   |  r3   |  r4   |  r5   
----+-------+-------+-------+-------
 7  | 00077 | 00777 | 07777 | 77777

Zauważ, że ta funkcja wymaga, aby liczba była przekazywana jako ciąg. Dlatego najpierw musimy przekonwertować liczbę na łańcuch. Znak dopełniający również musi być ciągiem.

Być może będziemy musieli zrobić coś takiego:

SELECT LPAD(CAST(7 AS varchar), 3, '0');

Wynik:

007

Jedna z zalet LPAD() ma nad poprzednią metodą jest to, że możemy poprzedzić wynik innymi znakami – nie musi to być wiodące zero.

SELECT 
    LPAD('77', 1, '.') AS "r1",
    LPAD('77', 5, '.') AS "r2",
    LPAD('777', 5, '.') AS "r3",
    LPAD('7777', 5, '.') AS "r4",
    LPAD('77777', 5, '.') AS "r5";

Wynik:

 r1 |  r2   |  r3   |  r4   |  r5   
----+-------+-------+-------+-------
 7  | ...77 | ..777 | .7777 | 77777

  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:nie można załadować biblioteki „/opt/PostgreSQL/9.0/lib/postgresql/plperl.so”:libperl.so:

  2. Jak mogę zmienić kodowanie bazy danych dla bazy danych PostgreSQL za pomocą sql lub phpPgAdmin?

  3. Replikacja strumieniowa PostgreSQL — szczegółowe informacje

  4. Big Data z PostgreSQL i Apache Spark

  5. Dołącz do aliasów kolumn SQL