V MariaDB, LPAD()
je vestavěná funkce řetězce, která doplní levou část řetězce určitým počtem znaků.
Můžete například použít LPAD()
k vyplnění levé části řetězce mezerami. Nebo můžete číslo doplnit nulami na začátku.
Syntaxe
Syntaxe vypadá takto:
LPAD(str, len [, padstr])
Kde str
je řetězec k vyplnění a len
je počet znaků, do kterých se má řetězec vyplnit. Všimněte si, že se nejedná o množství samotného odsazení, ale o celkový počet znaků, které bude mít vrácený řetězec po vyplnění.
padstr
je volitelný argument, který určuje, který znak se má použít pro výplň.
Příklad
Zde je základní příklad:
SELECT LPAD('Lion', 8);
Výsledek:
+-----------------+ | LPAD('Lion', 8) | +-----------------+ | Lion | +-----------------+
V tomto případě jsme nespecifikovali třetí argument (pro znak výplně), a tak byla použita mezera. Výchozí znak je mezera.
Určení znaku výplně
Zde je příklad, který používá třetí argument. Toto určuje, jaký znak použít pro výplň:
SELECT LPAD('Lion', 8, '.');
Výsledek:
+----------------------+ | LPAD('Lion', 8, '.') | +----------------------+ | ....Lion | +----------------------+
Tečky nám umožňují vidět výplň jasněji.
Čísla výplně
Zde je příklad vyplnění čísla nulami:
SELECT LPAD(7, 3, 0);
Výsledek:
+---------------+ | LPAD(7, 3, 0) | +---------------+ | 007 | +---------------+
Výplň menší než původní řetězec
Pokud je druhý argument menší než původní řetězec, nepřidá se žádná výplň a původní řetězec se zkrátí na zadaný počet znaků:
SELECT LPAD('Lion', 2);
Výsledek:
+-----------------+ | LPAD('Lion', 2) | +-----------------+ | Li | +-----------------+
Příklady databáze
Zde je příklad vyplnění levé části hodnot ve sloupci databáze:
SELECT
LPAD(PetName, 15, '.') AS "Padded Name",
PetName AS "Original Name"
FROM Pets;
Výsledek:
+-----------------+---------------+ | Padded Name | Original Name | +-----------------+---------------+ | .........Fluffy | Fluffy | | ..........Fetch | Fetch | | ........Scratch | Scratch | | ............Wag | Wag | | ..........Tweet | Tweet | | .........Fluffy | Fluffy | | ...........Bark | Bark | | ...........Meow | Meow | +-----------------+---------------+
Zde je další příklad, který vyplňuje sloupec ceny:
SELECT
ProductId,
ProductPrice,
LPAD(ProductPrice, 8, 0)
FROM Products;
Výsledek:
+-----------+--------------+--------------------------+ | 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 | +-----------+--------------+--------------------------+
Nulové argumenty
Pokud jsou některé (nebo všechny) argumenty null
, LPAD()
funkce vrací null
:
SELECT
LPAD(null, 10, '.'),
LPAD('Coffee', null, '.'),
LPAD('Coffee', 10, null);
Výsledek:
+---------------------+---------------------------+--------------------------+ | LPAD(null, 10, '.') | LPAD('Coffee', null, '.') | LPAD('Coffee', 10, null) | +---------------------+---------------------------+--------------------------+ | NULL | NULL | NULL | +---------------------+---------------------------+--------------------------+
Režim Oracle
Když ne běžící v režimu Oracle, pokud je výsledek prázdný (tj. má délku nula), výsledkem je prázdný řetězec.
Při spuštění v režimu Oracle je však výsledkem null
.
Zde je ve výchozím režimu (tj. ne v režimu Oracle):
SELECT LPAD('', 0);
Výsledek:
+-------------+ | LPAD('', 0) | +-------------+ | | +-------------+
Nyní přejdeme do režimu Oracle:
SET SQL_MODE=ORACLE;
A spusťte kód znovu:
SELECT LPAD('', 0);
Výsledek:
+-------------+ | LPAD('', 0) | +-------------+ | NULL | +-------------+
Chybí argumenty
Volání LPAD()
bez alespoň dvou argumentů vede k chybě:
SELECT LPAD('Coffee');
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'
Totéž se stane při volání LPAD()
bez jakýchkoli argumentů:
SELECT LPAD();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'