I Oracle er LPAD()
funktionen giver dig mulighed for at udfylde den venstre del af en streng med et bestemt tegn til et bestemt antal tegn.
Den måde, det fungerer på, er, at du angiver, hvor lang den resulterende streng skal være. Hvis den oprindelige streng er kortere, udfylder udfyldningstegnet den resterende plads.
Syntaks
Syntaksen ser sådan ud:
LPAD(expr1, n [, expr2 ])
Hvor:
expr1
ogexpr2
kan være enhver af datatyperneCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
ellerNCLOB
.n
er etNUMBER
heltal eller en værdi, der implicit kan konverteres til etNUMBER
heltal.
Funktionen returnerer expr1
, venstrepolstret til længden n
tegn med rækkefølgen af tegn i expr2
.
Hvis expr2
er udeladt, er udfyldningstegnet et enkelt blanktegn.
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT LPAD('Cat', 5)
FROM DUAL;
Resultat:
LPAD('CAT',5) ________________ Cat
Bemærk, at det angivne tal er den samlede bredde af den resulterende streng – ikke mængden af polstring.
Her er den igen sammenlignet med den originale (ikke-polstrede) streng:
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Resultat:
LPAD('CAT',5) ________________ Cat Cat
Angiv et tegn
I dette eksempel angiver jeg et tegn, der skal bruges til udfyldningen:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Resultat:
LPAD('CAT',5,'>') ____________________ >>Cat
Padding mindre end den originale streng
Hvis det andet argument er mindre end den oprindelige streng, tilføjes ingen udfyldning, og den oprindelige streng forkortes til det angivne antal tegn:
SELECT LPAD('Cat', 2)
FROM DUAL;
Resultat:
LPAD('CAT',2) ________________ Ca
Databaseeksempel
Her er et eksempel på udfyldning af den venstre del af værdierne i en databasekolonne:
SELECT
country_name,
LPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;
Resultat:
COUNTRY_NAME PADDED _______________ _______________ Argentina ...Argentina Australia ...Australia Belgium .....Belgium Brazil ......Brazil Canada ......Canada
Nul-værdier
Hvis nogen af argumenterne er null
resultatet er null
:
SET NULL 'null';
SELECT
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Resultat:
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('CAT',3,NULL) _______________ ___________________ _____________________ null null null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Forkert antal argumenter
Kalder LPAD()
uden at sende nogen argumenter returnerer en fejl:
SELECT LPAD()
FROM DUAL;
Resultat:
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:
Og at sende det forkerte antal argumenter resulterer i en fejl:
SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL;
Resultat:
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: