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.