V Oracle, LPAD()
funkce umožňuje vyplnit levou část ř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ší, zbývající místo vyplní znak pro výplň.
Syntaxe
Syntaxe vypadá takto:
LPAD(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 doleva 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 LPAD('Cat', 5)
FROM DUAL;
Výsledek:
LPAD('CAT',5) _________________ Cat
Všimněte si, že zadané číslo je celková šířka výsledného řetězce – ne množství vycpávky.
Zde je to opět při srovnání s původním (nevycpaným) řetězcem:
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Výsledek:
LPAD('CAT',5) _________________ Cat Cat
Zadejte znak
V tomto příkladu specifikuji znak, který se má použít pro výplň:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Výsledek:
LPAD('CAT',5,'>') _____________________>>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 LPAD('Cat', 2)
FROM DUAL;
Výsledek:
LPAD('CAT',2) _________________ Ca
Příklad databáze
Zde je příklad vyplnění levé části hodnot ve sloupci databáze:
SELECT
country_name,
LPAD(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
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Výsledek:
LPAD(NULL;3) LPAD('CAT',NULL) LPAD('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í
LPAD()
bez předání jakýchkoli argumentů vrátí chybu:SELECT LPAD() FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT LPAD()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 LPAD('Cat', 1, '>', 2) FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT LPAD('Cat', 1, '>', 2)FROM DUALEchyba na příkazovém řádku:1 Sloupec:28Hlášení o chybě -Chyba SQL:ORA-00939:příliš mnoho argumentů pro funkce00939. 00000 - "příliš mnoho argumentů pro funkci"*Příčina:*Akce: