I Oracle, LPAD()
funktionen låter dig fylla den vänstra delen av en sträng med ett visst tecken, till ett specificerat antal tecken.
Hur det fungerar är att du anger hur lång den resulterande strängen ska vara. Om originalsträngen är kortare fyller utfyllnadstecknet ut det återstående utrymmet.
Syntax
Syntaxen ser ut så här:
LPAD(expr1, n [, expr2 ])
Var:
expr1
ochexpr2
kan vara vilken som helst av datatypernaCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, ellerNCLOB
.n
är ettNUMBER
heltal eller ett värde som implicit kan konverteras till ettNUMBER
heltal.
Funktionen returnerar expr1
, vänsterstoppad till längden n
tecken med teckensekvensen i expr2
.
Om expr2
är utelämnat, är utfyllnadstecknet ett enda blanksteg.
Exempel
Här är ett enkelt exempel att visa:
SELECT LPAD('Cat', 5)
FROM DUAL;
Resultat:
LPAD('CAT',5) ________________ Cat
Observera att numret som anges är den totala bredden på den resulterande strängen – inte mängden stoppning.
Här är den igen jämfört med den ursprungliga (icke vadderade) strängen:
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Resultat:
LPAD('CAT',5) ________________ Cat Cat
Ange ett tecken
I det här exemplet anger jag ett tecken som ska användas för utfyllnad:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Resultat:
LPAD('CAT',5,'>') ____________________ >>Cat
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('Cat', 2)
FROM DUAL;
Resultat:
LPAD('CAT',2) ________________ Ca
Databasexempel
Här är ett exempel på utfyllnad av den vänstra delen av värdena i en databaskolumn:
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
Nullvärden
Om något av argumenten är null
resultatet är 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 returnerar SQLcl och SQL*Plus ett tomt utrymme när null
uppstår som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Inkorrekt antal argument
Anropar LPAD()
utan att skicka några argument returnerar ett fel:
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:
Och att skicka fel antal argument resulterar i ett fel:
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: