V Oracle, RPAD()
Funkce umožňuje vyplnění pravé části řetězce určitým znakem na zadaný počet znaků.
Funguje to tak, že určíte, jak dlouhý má být výsledný řetězec. Pokud je původní řetězec kratší, vyplní zbývající místo znak pro výplň.
Syntaxe
Syntaxe vypadá takto:
RPAD(expr1 , n [, expr2 ])
Kde:
expr1
aexpr2
může být libovolný z datových typůCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
neboNCLOB
.n
jeNUMBER
celé číslo nebo hodnotu, kterou lze implicitně převést naNUMBER
celé číslo.
Funkce vrací expr1
, doplněno zprava na délku n
znaky s posloupností znaků v expr2
.
Pokud expr2
je vynechán, znak výplně je jedna mezera.
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT RPAD('Cat', 25)
FROM DUAL;
Výsledek:
RPAD('CAT',25) ____________________________ Kočka
Není snadné vidět účinek tohoto příkladu, protože jsme řetězec doplnili výchozím znakem (mezera), ale mělo to za následek posunutí šířky sloupce.
Níže je další příklad, který lépe demonstruje efekt:
SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;
Výsledek:
RPAD('CAT',15)||'HOUSE' ___________________________ Cat House
Zřetězení dvou řetězců odhalí množství výplně, která byla aplikována na pravou část řetězce zcela vlevo.
Všimněte si, že zadané číslo je celková šířka výsledného řetězce – ne množství vycpávky.
Zadejte znak
V tomto příkladu specifikuji znak, který se má použít pro výplň:
SELECT RPAD('Cat', 7, '!')
FROM DUAL;
Výsledek:
RPAD('CAT',7,'!') _____________________ Kočka!!!!
Výplň menší než původní řetězec
Pokud je druhý argument menší než původní řetězec, nepřidá se žádná výplň a původní řetězec se zkrátí na zadaný počet znaků:
SELECT RPAD('Cat', 2)
FROM DUAL;
Výsledek:
RPAD('CAT',2) _________________ Ca
Příklad databáze
Zde je příklad vyplnění pravé části hodnot ve sloupci databáze:
SELECT
country_name,
RPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;
Výsledek:
COUNTRY_NAME PADDED _______________ ________________ Argentina Argentina... Austrálie Austrálie... Belgie Belgie..... Brazílie Brazílie...... Kanada Kanada......
Nulové hodnoty
Pokud je některý z argumentů null
výsledkem je null
:
SET NULL 'null';
SELECT
RPAD(null, 3),
RPAD('Cat', null),
RPAD('Cat', 3, null)
FROM DUAL;
Výsledek:
RPAD(NULL;3) RPAD('CAT',NULL) RPAD('CAT',3,NULL) _______________ ___________________ ______________________ nullVe výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když
null
dochází v důsledku SQLSELECT
prohlášení.Můžete však použít
SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězecnull
by měl být vrácen.Nesprávný počet argumentů
Volání
RPAD()
bez předání jakýchkoli argumentů vrátí chybu:SELECT RPAD() FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT RPAD()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00938:nedostatek argumentů pro funkci00938 . 00000 - "nedostatek argumentů pro funkci"*Příčina:*Akce:A předání nesprávného počtu argumentů má za následek chybu:
SELECT RPAD('Cat', 1, '>', 2) FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT RPAD('Cat', 1, '>', 2)FROM DUALEchyba na příkazovém řádku:1 Sloupec:28Hlášení o chybě -SQL Chyba:ORA-00939:příliš mnoho argumentů pro funkci00939. 00000 - "příliš mnoho argumentů pro funkci"*Příčina:*Akce: