In SQL, LPAD()
is een veelgebruikte functie die het linkergedeelte van een tekenreeks opvult met een opgegeven teken. De functie kan worden gebruikt op tekenreeksen en getallen, hoewel, afhankelijk van het DBMS, getallen mogelijk als een tekenreeks moeten worden doorgegeven voordat ze kunnen worden opgevuld.
DBMS'en met een LPAD()
functies omvatten MySQL, MariaDB, PostgreSQL en Oracle.
DBMS'en die niet een LPAD()
. hebben functie omvatten SQL Server en SQLite (hoewel er andere manieren zijn om linkerpadding toe te passen in deze DBMS'en).
Voorbeeld
Hier is een voorbeeld om te demonstreren hoe LPAD()
te gebruiken in uw SQL-code:
SELECT LPAD('Look Left', 20);
Resultaat:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
In dit voorbeeld is het linkerdeel van de tekenreeks opgevuld met een spatie (het standaard opvulteken) en is de resulterende tekenreeks 20 tekens lang (omdat ik 20
heb opgegeven als het tweede argument).
Oracle werkt hetzelfde, maar we moeten FROM DUAL
. gebruiken bij het doen van een zoekopdracht als deze (zonder een echte tabel te doorzoeken):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Resultaat:
LPAD('LOOKLEFT',20) _______________________ Look Left
Geef een opvulkarakter op
De opvulling hoeft niet per se een spatie te zijn. We kunnen optioneel een derde argument toevoegen om het teken (of de tekens) te specificeren dat in de opvulling moet worden gebruikt.
SELECT LPAD('7', 3, '0');
Resultaat:
007
In dit geval vulde ik een getal met nullen. In dit voorbeeld heb ik het nummer als een tekenreeks doorgegeven.
In sommige DBMS'en (zoals MariaDB en MySQL) kunnen we het nummer als een nummer doorgeven, evenals het nummer om het mee op te vullen:
SELECT LPAD(7, 3, 0);
Resultaat:
007
We kunnen dit ook in Oracle doen:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Resultaat:
007
Maar PostgreSQL heeft hier een probleem mee:
SELECT LPAD(7, 3, 0);
Resultaat:
ERROR: function lpad(integer, integer, integer) does not exist
SQL-server
SQL Server heeft geen LPAD()
functie, maar het heeft wel een FORMAT()
functie waarmee we getallen met voorloopnullen kunnen invullen:
SELECT FORMAT(7, '000');
Resultaat:
007
De manier waarop het werkt, is dat we het nummer doorgeven, gevolgd door een opmaakreeks. In het bovenstaande voorbeeld is de notatiereeks 000
. Dit is een aangepaste tekenreeks voor numerieke notatie die ertoe leidt dat het oorspronkelijke nummer wordt opgevuld, zodat het resultaat uit drie cijfers bestaat. Als er nog geen drie cijfers in het oorspronkelijke nummer staan, wordt het opgevuld met nullen.
Om tekenreeksen in SQL Server naar links te sturen, kunnen we zoiets als dit doen:
SELECT RIGHT('.......' + 'Cat', 7);
Resultaat:
....Cat
Er zijn ook een paar andere LPAD()-equivalenten in SQL Server.