W SQL LPAD()
to powszechnie używana funkcja, która dopełnia lewą część ciągu określonym znakiem. Funkcja może być używana na ciągach i liczbach, chociaż w zależności od DBMS, liczby muszą być przekazane jako ciąg, zanim będą mogły zostać uzupełnione.
DBMS, które mają LPAD()
funkcja obejmuje MySQL, MariaDB, PostgreSQL i Oracle.
DBMS, których nie mieć LPAD()
funkcja obejmuje SQL Server i SQLite (chociaż istnieją inne sposoby zastosowania lewego dopełnienia w tych DBMS).
Przykład
Oto przykład pokazujący, jak używać LPAD()
w kodzie SQL:
SELECT LPAD('Look Left', 20);
Wynik:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
W tym przykładzie lewa część ciągu jest uzupełniona spacją (domyślny znak wypełniający), a wynikowy ciąg ma długość 20 znaków (ponieważ określiłem 20
jako drugi argument).
Oracle działa tak samo, ale musimy użyć FROM DUAL
wykonując zapytanie w ten sposób (bez odpytywania rzeczywistej tabeli):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Wynik:
LPAD('LOOKLEFT',20) _______________________ Look Left
Określ znak wypełniający
Wypełnienie niekoniecznie musi być spacją. Możemy opcjonalnie dodać trzeci argument, aby określić znak (lub znaki) do użycia w dopełnieniu.
SELECT LPAD('7', 3, '0');
Wynik:
007
W tym przypadku uzupełniłem liczbę zerami. W tym przykładzie przekazałem liczbę jako ciąg znaków.
W niektórych DBMS-ach (takich jak MariaDB i MySQL) możemy przekazać liczbę jako liczbę, jak również liczbę do uzupełnienia:
SELECT LPAD(7, 3, 0);
Wynik:
007
Możemy to również zrobić w Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Wynik:
007
Ale PostgreSQL ma z tym problem:
SELECT LPAD(7, 3, 0);
Wynik:
ERROR: function lpad(integer, integer, integer) does not exist
Serwer SQL
SQL Server nie ma funkcji LPAD()
funkcja, ale ma funkcję FORMAT()
funkcja umożliwiająca dopełnianie liczb wiodącymi zerami:
SELECT FORMAT(7, '000');
Wynik:
007
Działa to tak, że przekazujemy liczbę, po której następuje ciąg formatu. W powyższym przykładzie ciąg formatu to 000
. Jest to niestandardowy ciąg formatu liczbowego, który powoduje dopełnienie oryginalnej liczby, tak aby wynik składał się z trzech cyfr. Jeśli w oryginalnym numerze nie ma jeszcze trzech cyfr, jest on uzupełniony zerami.
Aby pozostawić ciągi padów w SQL Server, możemy zrobić coś takiego:
SELECT RIGHT('.......' + 'Cat', 7);
Wynik:
....Cat
Istnieje również kilka innych odpowiedników LPAD() w SQL Server.