In Oracle, de LPAD()
functie stelt u in staat om het linkergedeelte van een tekenreeks met een bepaald teken op te vullen tot een bepaald aantal tekens.
De manier waarop het werkt, is dat u specificeert hoe lang de resulterende string moet zijn. Als de oorspronkelijke tekenreeks korter is, vult het opvulteken de resterende ruimte op.
Syntaxis
De syntaxis gaat als volgt:
LPAD(expr1, n [, expr2 ])
Waar:
expr1
enexpr2
kan elk van de gegevenstypen zijnCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, ofNCLOB
.n
is eenNUMBER
geheel getal of een waarde die impliciet kan worden geconverteerd naar eenNUMBER
geheel getal.
De functie retourneert expr1
, links opgevuld tot lengte n
tekens met de reeks tekens in expr2
.
Als expr2
wordt weggelaten, is het opvulteken een enkele spatie.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren:
SELECT LPAD('Cat', 5)
FROM DUAL;
Resultaat:
LPAD('CAT',5) ________________ Cat
Merk op dat het opgegeven getal de totale breedte is van de resulterende string – niet de hoeveelheid opvulling.
Hier is het weer in vergelijking met de originele (niet-opgevulde) snaar:
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Resultaat:
LPAD('CAT',5) ________________ Cat Cat
Geef een karakter op
In dit voorbeeld specificeer ik een teken om te gebruiken voor de opvulling:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Resultaat:
LPAD('CAT',5,'>') ____________________ >>Cat
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 LPAD('Cat', 2)
FROM DUAL;
Resultaat:
LPAD('CAT',2) ________________ Ca
Databasevoorbeeld
Hier is een voorbeeld van het opvullen van het linkerdeel van de waarden in een databasekolom:
SELECT
country_name,
LPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;
Resultaat:
COUNTRY_NAME PADDED _______________ _______________ Argentina ...Argentina Australia ...Australia Belgium .....Belgium Brazil ......Brazil Canada ......Canada
Null-waarden
Als een van de argumenten null
. is het resultaat is null
:
SET NULL 'null';
SELECT
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Resultaat:
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('CAT',3,NULL) _______________ ___________________ _____________________ null null null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Onjuist aantal argumenten
LPAD()
. aanroepen zonder het doorgeven van argumenten geeft een fout:
SELECT LPAD()
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LPAD() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:
SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LPAD('Cat', 1, '>', 2) FROM DUAL Error at Command Line : 1 Column : 28 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: