I MariaDB, LPAD()
är en inbyggd strängfunktion som fyller den vänstra delen av en sträng med ett visst antal tecken.
Du kan till exempel använda LPAD()
för att fylla den vänstra delen av ett snöre med mellanslag. Eller så kan du fylla på ett nummer med inledande nollor.
Syntax
Syntaxen ser ut så här:
LPAD(str, len [, padstr])
Där str
är strängen som ska fyllas och len
är antalet tecken som strängen ska fyllas på. Observera att detta inte är mängden utfyllnad i sig, utan det är det totala antalet tecken som den returnerade strängen kommer att ha efter att den har utfyllts.
padstr
är ett valfritt argument som anger vilket tecken som ska användas för utfyllnaden.
Exempel
Här är ett grundläggande exempel:
SELECT LPAD('Lion', 8);
Resultat:
+-----------------+ | LPAD('Lion', 8) | +-----------------+ | Lion | +-----------------+
I det här fallet angav vi inte ett tredje argument (för utfyllnadstecknet), och därför användes ett mellanslag. Mellanslagstecknet är standardtecknet.
Ange en utfyllnadstecken
Här är ett exempel som använder ett tredje argument. Detta anger vilket tecken som ska användas för utfyllnad:
SELECT LPAD('Lion', 8, '.');
Resultat:
+----------------------+ | LPAD('Lion', 8, '.') | +----------------------+ | ....Lion | +----------------------+
Prickarna gör att vi kan se vadderingen tydligare.
Utfyllnadsnummer
Här är ett exempel på att fylla ut ett tal med nollor:
SELECT LPAD(7, 3, 0);
Resultat:
+---------------+ | LPAD(7, 3, 0) | +---------------+ | 007 | +---------------+
Utfyllning mindre än originalsträngen
Om det andra argumentet är mindre än den ursprungliga strängen läggs ingen utfyllnad till och den ursprungliga strängen förkortas till det angivna antalet tecken:
SELECT LPAD('Lion', 2);
Resultat:
+-----------------+ | LPAD('Lion', 2) | +-----------------+ | Li | +-----------------+
Databasexempel
Här är ett exempel på utfyllnad av den vänstra delen av värdena i en databaskolumn:
SELECT
LPAD(PetName, 15, '.') AS "Padded Name",
PetName AS "Original Name"
FROM Pets;
Resultat:
+-----------------+---------------+ | Padded Name | Original Name | +-----------------+---------------+ | .........Fluffy | Fluffy | | ..........Fetch | Fetch | | ........Scratch | Scratch | | ............Wag | Wag | | ..........Tweet | Tweet | | .........Fluffy | Fluffy | | ...........Bark | Bark | | ...........Meow | Meow | +-----------------+---------------+
Här är ett annat exempel som fyller en priskolumn:
SELECT
ProductId,
ProductPrice,
LPAD(ProductPrice, 8, 0)
FROM Products;
Resultat:
+-----------+--------------+--------------------------+ | 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 | +-----------+--------------+--------------------------+
Nollargument
Om något (eller alla) av argumenten är null
, LPAD()
funktion returnerar null
:
SELECT
LPAD(null, 10, '.'),
LPAD('Coffee', null, '.'),
LPAD('Coffee', 10, null);
Resultat:
+---------------------+---------------------------+--------------------------+ | LPAD(null, 10, '.') | LPAD('Coffee', null, '.') | LPAD('Coffee', 10, null) | +---------------------+---------------------------+--------------------------+ | NULL | NULL | NULL | +---------------------+---------------------------+--------------------------+
Oracle Mode
När inte körs i Oracle-läge, om resultatet är tomt (dvs. det har en längd på noll) är resultatet en tom sträng.
Men när du kör i Oracle-läge är resultatet null
.
Här är den i standardläge (dvs inte i Oracle-läge):
SELECT LPAD('', 0);
Resultat:
+-------------+ | LPAD('', 0) | +-------------+ | | +-------------+
Låt oss nu byta till Oracle-läge:
SET SQL_MODE=ORACLE;
Och kör koden igen:
SELECT LPAD('', 0);
Resultat:
+-------------+ | LPAD('', 0) | +-------------+ | NULL | +-------------+
Argument saknas
Anropar LPAD()
utan minst två argument resulterar i ett fel:
SELECT LPAD('Coffee');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'
Samma sak händer när du anropar LPAD()
utan några argument:
SELECT LPAD();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'