In Oracle, de RPAD()
Met deze functie kunt u het rechtergedeelte van een tekenreeks opvullen met een bepaald teken, 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:
RPAD(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
, rechts 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 RPAD('Cat', 25)
FROM DUAL;
Resultaat:
RPAD('CAT',25) ____________________________ Cat
Het is niet gemakkelijk om het effect van dit voorbeeld te zien, omdat we de string hebben opgevuld met het standaardteken (een spatie), maar het had wel tot gevolg dat de breedte van de kolom werd verdrongen.
Hieronder is nog een voorbeeld dat het effect beter laat zien:
SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;
Resultaat:
RPAD('CAT',15)||'HOUSE' __________________________ Cat House
Door de twee tekenreeksen aaneen te schakelen, wordt de hoeveelheid opvulling zichtbaar die is toegepast op het rechtergedeelte van de meest linkse tekenreeks.
Merk op dat het opgegeven getal de totale breedte is van de resulterende string – niet de hoeveelheid vulling.
Geef een karakter op
In dit voorbeeld specificeer ik een teken om te gebruiken voor de opvulling:
SELECT RPAD('Cat', 7, '!')
FROM DUAL;
Resultaat:
RPAD('CAT',7,'!') ____________________ 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 RPAD('Cat', 2)
FROM DUAL;
Resultaat:
RPAD('CAT',2) ________________ Ca
Databasevoorbeeld
Hier is een voorbeeld van het opvullen van het rechterdeel van de waarden in een databasekolom:
SELECT
country_name,
RPAD(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
RPAD(null, 3),
RPAD('Cat', null),
RPAD('Cat', 3, null)
FROM DUAL;
Resultaat:
RPAD(NULL,3) RPAD('CAT',NULL) RPAD('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
Aanroepen van RPAD()
zonder het doorgeven van argumenten geeft een fout:
SELECT RPAD()
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT RPAD() 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 RPAD('Cat', 1, '>', 2)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT RPAD('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: