I SQL, LPAD()
är en vanlig funktion som fyller den vänstra delen av en sträng med ett specificerat tecken. Funktionen kan användas på strängar och siffror, men beroende på DBMS kan siffror behöva skickas som en sträng innan de kan utfyllas.
DBMS som har en LPAD()
funktioner inkluderar MySQL, MariaDB, PostgreSQL och Oracle.
DBMS som inte gör det har en LPAD()
funktioner inkluderar SQL Server och SQLite (även om det finns andra sätt att tillämpa vänster utfyllnad i dessa DBMS).
Exempel
Här är ett exempel för att visa hur man använder LPAD()
i din SQL-kod:
SELECT LPAD('Look Left', 20);
Resultat:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
I det här exemplet är den vänstra delen av strängen utfylld med ett mellanslag (standard utfyllnadstecken), och den resulterande strängen är 20 tecken lång (eftersom jag angav 20
som det andra argumentet).
Oracle fungerar på samma sätt, men vi måste använda FROM DUAL
när du gör en fråga som denna (utan att fråga en faktisk tabell):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Resultat:
LPAD('LOOKLEFT',20) _______________________ Look Left
Ange en utfyllnadstecken
Vadderingen behöver inte nödvändigtvis vara ett mellanslag. Vi kan valfritt lägga till ett tredje argument för att specificera tecknet (eller tecknen) som ska användas i utfyllnaden.
SELECT LPAD('7', 3, '0');
Resultat:
007
I det här fallet fyllde jag ut ett nummer med nollor. Jag skickade faktiskt numret som en sträng i det här exemplet.
I vissa DBMS:er (som MariaDB och MySQL) kan vi skicka numret som ett nummer, såväl som numret att fylla det med:
SELECT LPAD(7, 3, 0);
Resultat:
007
Vi kan också göra detta i Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Resultat:
007
Men PostgreSQL har ett problem med detta:
SELECT LPAD(7, 3, 0);
Resultat:
ERROR: function lpad(integer, integer, integer) does not exist
SQL-server
SQL Server har ingen LPAD()
funktion, men den har en FORMAT()
funktion som låter oss fylla på siffror med inledande nollor:
SELECT FORMAT(7, '000');
Resultat:
007
Så det fungerar är att vi skickar numret, följt av en formatsträng. I exemplet ovan är formatsträngen 000
. Detta är en sträng med anpassat numeriskt format som resulterar i att det ursprungliga numret utfylls så att resultatet består av tre siffror. Om det inte redan finns tre siffror i det ursprungliga numret är det utfyllt med nollor.
Till vänster pad-strängar i SQL Server kan vi göra något så här:
SELECT RIGHT('.......' + 'Cat', 7);
Resultat:
....Cat
Det finns också ett par andra LPAD()-ekvivalenter i SQL Server.