W MariaDB, LPAD()
jest wbudowaną funkcją ciągów znaków, która uzupełnia lewą część ciągu określoną liczbą znaków.
Na przykład możesz użyć LPAD()
aby uzupełnić lewą część ciągu spacjami. Możesz też uzupełnić liczbę wiodącymi zerami.
Składnia
Składnia wygląda tak:
LPAD(str, len [, padstr])
Gdzie str
jest ciągiem do wypełnienia, a len
to liczba znaków do uzupełnienia ciągu. Zwróć uwagę, że nie jest to ilość samego dopełnienia, a raczej całkowita liczba znaków, które będzie miał zwrócony ciąg po uzupełnieniu.
padstr
jest opcjonalnym argumentem, który określa, którego znaku użyć do wypełnienia.
Przykład
Oto podstawowy przykład:
SELECT LPAD('Lion', 8);
Wynik:
+-----------------+ | LPAD('Lion', 8) | +-----------------+ | Lion | +-----------------+
W tym przypadku nie podaliśmy trzeciego argumentu (dla znaku dopełniającego), więc użyliśmy spacji. Spacja jest znakiem domyślnym.
Określ znak wypełniający
Oto przykład z trzecim argumentem. To określa, jakiego znaku użyć do wypełnienia:
SELECT LPAD('Lion', 8, '.');
Wynik:
+----------------------+ | LPAD('Lion', 8, '.') | +----------------------+ | ....Lion | +----------------------+
Kropki pozwalają nam wyraźniej zobaczyć wypełnienie.
Liczby wypełniające
Oto przykład uzupełniania liczby zerami:
SELECT LPAD(7, 3, 0);
Wynik:
+---------------+ | LPAD(7, 3, 0) | +---------------+ | 007 | +---------------+
Dopełnienie mniejsze niż oryginalny ciąg
Jeśli drugi argument jest mniejszy niż oryginalny ciąg, nie jest dodawane żadne uzupełnienie, a oryginalny ciąg jest skracany do określonej liczby znaków:
SELECT LPAD('Lion', 2);
Wynik:
+-----------------+ | LPAD('Lion', 2) | +-----------------+ | Li | +-----------------+
Przykłady baz danych
Oto przykład dopełnienia lewej części wartości w kolumnie bazy danych:
SELECT
LPAD(PetName, 15, '.') AS "Padded Name",
PetName AS "Original Name"
FROM Pets;
Wynik:
+-----------------+---------------+ | Padded Name | Original Name | +-----------------+---------------+ | .........Fluffy | Fluffy | | ..........Fetch | Fetch | | ........Scratch | Scratch | | ............Wag | Wag | | ..........Tweet | Tweet | | .........Fluffy | Fluffy | | ...........Bark | Bark | | ...........Meow | Meow | +-----------------+---------------+
Oto kolejny przykład wypełniający kolumnę ceny:
SELECT
ProductId,
ProductPrice,
LPAD(ProductPrice, 8, 0)
FROM Products;
Wynik:
+-----------+--------------+--------------------------+ | ProductId | ProductPrice | LPAD(ProductPrice, 8, 0) | +-----------+--------------+--------------------------+ | 1 | 25.99 | 00025.99 | | 2 | 25.99 | 00025.99 | | 3 | 14.75 | 00014.75 | | 4 | 11.99 | 00011.99 | | 5 | 33.49 | 00033.49 | | 6 | 245.00 | 00245.00 | | 7 | 55.99 | 00055.99 | | 8 | 9.99 | 00009.99 | +-----------+--------------+--------------------------+
Argumenty zerowe
Jeśli którykolwiek (lub wszystkie) argumenty są null
, LPAD()
funkcja zwraca null
:
SELECT
LPAD(null, 10, '.'),
LPAD('Coffee', null, '.'),
LPAD('Coffee', 10, null);
Wynik:
+---------------------+---------------------------+--------------------------+ | LPAD(null, 10, '.') | LPAD('Coffee', null, '.') | LPAD('Coffee', 10, null) | +---------------------+---------------------------+--------------------------+ | NULL | NULL | NULL | +---------------------+---------------------------+--------------------------+
Tryb Oracle
Kiedy nie działa w trybie Oracle, jeśli wynik jest pusty (tj. ma długość równą zero), wynikiem jest pusty ciąg.
Jednak podczas pracy w trybie Oracle wynik to null
.
Tutaj jest w trybie domyślnym (tzn. nie w trybie Oracle):
SELECT LPAD('', 0);
Wynik:
+-------------+ | LPAD('', 0) | +-------------+ | | +-------------+
Przejdźmy teraz do trybu Oracle:
SET SQL_MODE=ORACLE;
I uruchom kod ponownie:
SELECT LPAD('', 0);
Wynik:
+-------------+ | LPAD('', 0) | +-------------+ | NULL | +-------------+
Brakujące argumenty
Wywołanie LPAD()
bez co najmniej dwóch argumentów powoduje błąd:
SELECT LPAD('Coffee');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'
To samo dzieje się podczas wywoływania LPAD()
bez żadnych argumentów:
SELECT LPAD();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'