V MariaDB, RPAD()
je vestavěná funkce řetězce, která doplní pravou část řetězce určitým počtem zadaných znaků.
Můžete například použít RPAD()
k vyplnění pravé části provázku tečkami.
Syntaxe
Syntaxe vypadá takto:
RPAD(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
RPAD('Fire', 8) AS "1",
RPAD('Fire', 15) AS "2",
'Fire' AS "3";
Výsledek:
+----------+-----------------+------+ | 1 | 2 | 3 | +----------+-----------------+------+ | Fire | Fire | Fire | +----------+-----------------+------+
Znak mezery je výchozí znak. Pokud tedy neuvedete třetí argument, použije se mezera. V tomto případě jsme nespecifikovali třetí argument, a tak byla použita mezera.
Tento příklad vrátí tři sloupce. Udělal jsem to, abych vám usnadnil vidět účinek RPAD()
jasněji. Výplň má za následek posunutí šířky sloupce na zadanou délku výplně.
V tomto případě první dva sloupce používají dvě různé délky výplně a třetí je původní (nevycpaný) řetězec.
Určení znaku výplně
Zde je příklad, který používá třetí argument. Toto určuje, jaký znak se má použít pro výplň:
SELECT RPAD('Fire', 15, '.');
Výsledek:
+-----------------------+ | RPAD('Fire', 15, '.') | +-----------------------+ | Fire........... | +-----------------------+
Tečky nám umožňují vidět výplň jasněji.
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 RPAD('Enlightenment', 7);
Výsledek:
+--------------------------+ | RPAD('Enlightenment', 7) | +--------------------------+ | Enlight | +--------------------------+
Příklad databáze
Zde je příklad vyplnění pravé části hodnot ve sloupci databáze:
SELECT
RPAD(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 | +-----------------+---------------+
Nulové argumenty
Pokud jsou některé (nebo všechny) argumenty null
, RPAD()
funkce vrací null
:
SELECT
RPAD(null, 10, '.'),
RPAD('Coffee', null, '.'),
RPAD('Coffee', 10, null);
Výsledek:
+---------------------+---------------------------+--------------------------+ | RPAD(null, 10, '.') | RPAD('Coffee', null, '.') | RPAD('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 RPAD('', 0);
Výsledek:
+-------------+ | RPAD('', 0) | +-------------+ | | +-------------+
Nyní přejdeme do režimu Oracle:
SET SQL_MODE=ORACLE;
A spusťte kód znovu:
SELECT RPAD('', 0);
Výsledek:
+-------------+ | RPAD('', 0) | +-------------+ | NULL | +-------------+
Chybí argumenty
Volání RPAD()
bez alespoň dvou argumentů vede k chybě:
SELECT RPAD('Coffee');
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'RPAD'
Totéž se stane při volání RPAD()
bez jakýchkoli argumentů:
SELECT RPAD();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'RPAD'