sql >> Databáze >  >> RDS >> MariaDB

Jak RPAD() funguje v MariaDB

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'

  1. Příklady FROM_UNIXTIME() – MySQL

  2. Jak převést počet týdnů na datum?

  3. Rozdíl mezi CTE a SubQuery?

  4. Jak porovnat dvě schémata v PostgreSQL