sql >> Database >  >> RDS >> MariaDB

Hoe RPAD() werkt in MariaDB

In MariaDB, RPAD() is een ingebouwde tekenreeksfunctie die het rechtergedeelte van een tekenreeks opvult met een bepaald aantal van een gespecificeerd teken.

U kunt bijvoorbeeld RPAD() . gebruiken om het rechterdeel van een string met stippen op te vullen.

Syntaxis

De syntaxis gaat als volgt:

RPAD(str, len [, padstr])

Waar str is de tekenreeks die moet worden ingevuld, en len is het aantal tekens waarnaar de string moet worden ingevuld. Merk op dat dit niet de hoeveelheid opvulling zelf is, maar het totale aantal tekens dat de geretourneerde tekenreeks zal hebben nadat deze is opgevuld.

padstr is een optioneel argument dat aangeeft welk teken moet worden gebruikt voor de opvulling.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT 
    RPAD('Fire', 8) AS "1",
    RPAD('Fire', 15) AS "2",
    'Fire' AS "3";

Resultaat:

+----------+-----------------+------+
| 1        | 2               | 3    |
+----------+-----------------+------+
| Fire     | Fire            | Fire |
+----------+-----------------+------+

Het spatieteken is het standaardteken. Daarom wordt een spatie gebruikt als u geen derde argument opneemt. In dit geval hebben we geen derde argument gespecificeerd, en dus werd een spatie gebruikt.

Dit voorbeeld retourneert drie kolommen. Ik deed dat om het voor u gemakkelijker te maken om het effect van RPAD() . te zien duidelijker. De opvulling heeft het effect dat de breedte van de kolom naar de opgegeven opvullengte wordt geduwd.

In dit geval gebruiken de eerste twee kolommen twee verschillende opvullengtes en de derde is de originele (niet-opgevulde) tekenreeks.

Geef een opvulkarakter op

Hier is een voorbeeld dat een derde argument gebruikt. Dit specificeert welk teken voor de opvulling moet worden gebruikt:

SELECT RPAD('Fire', 15, '.');

Resultaat:

+-----------------------+
| RPAD('Fire', 15, '.') |
+-----------------------+
| Fire...........       |
+-----------------------+

Door de stippen kunnen we de opvulling duidelijker zien.

Opvulling kleiner dan de originele string

Als het tweede argument kleiner is dan de oorspronkelijke tekenreeks, wordt er geen opvulling toegevoegd en wordt de oorspronkelijke tekenreeks ingekort tot het opgegeven aantal tekens:

SELECT RPAD('Enlightenment', 7);

Resultaat:

+--------------------------+
| RPAD('Enlightenment', 7) |
+--------------------------+
| Enlight                  |
+--------------------------+

Databasevoorbeeld

Hier is een voorbeeld van het opvullen van het rechterdeel van de waarden in een databasekolom:

SELECT 
    RPAD(PetName, 15, '.') AS "Padded Name",
    PetName AS "Original Name"
FROM Pets;

Resultaat:

+-----------------+---------------+
| Padded Name     | Original Name |
+-----------------+---------------+
| Fluffy......... | Fluffy        |
| Fetch.......... | Fetch         |
| Scratch........ | Scratch       |
| Wag............ | Wag           |
| Tweet.......... | Tweet         |
| Fluffy......... | Fluffy        |
| Bark........... | Bark          |
| Meow........... | Meow          |
+-----------------+---------------+

Nullargumenten

Als een (of alle) argumenten null . zijn , de RPAD() functie retourneert null :

SELECT 
    RPAD(null, 10, '.'),
    RPAD('Coffee', null, '.'),
    RPAD('Coffee', 10, null);

Resultaat:

+---------------------+---------------------------+--------------------------+
| RPAD(null, 10, '.') | RPAD('Coffee', null, '.') | RPAD('Coffee', 10, null) |
+---------------------+---------------------------+--------------------------+
| NULL                | NULL                      | NULL                     |
+---------------------+---------------------------+--------------------------+

Oracle-modus

Wanneer niet draait in Oracle-modus, als het resultaat leeg is (d.w.z. het heeft een lengte van nul), is het resultaat een lege string.

Als het echter in Oracle-modus wordt uitgevoerd, is het resultaat null .

Hier is het in de standaardmodus (d.w.z. niet in Oracle-modus):

SELECT RPAD('', 0);

Resultaat:

+-------------+
| RPAD('', 0) |
+-------------+
|             |
+-------------+

Laten we nu overschakelen naar de Oracle-modus:

SET SQL_MODE=ORACLE;

En voer de code opnieuw uit:

SELECT RPAD('', 0);

Resultaat:

+-------------+
| RPAD('', 0) |
+-------------+
| NULL        |
+-------------+

Ontbrekende argumenten

Aanroepen van RPAD() zonder ten minste twee argumenten resulteert in een fout:

SELECT RPAD('Coffee');

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'RPAD'

Hetzelfde gebeurt bij het aanroepen van RPAD() zonder argumenten:

SELECT RPAD();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'RPAD'

  1. mysql selecteer top n max waarden

  2. juiste syntaxis om te gebruiken in de buurt van '?'

  3. Long converteren naar Varchar2

  4. Hash-joins op nullable-kolommen