sql >> Databáze >  >> RDS >> Oracle

Funkce LPAD() v Oracle

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 a expr2 může být libovolný z datových typů CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB nebo NCLOB .
  • n je NUMBER celé číslo nebo hodnotu, kterou lze implicitně převést na NUMBER 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) _______________ ___________________ ______________________ null 

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT 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ězec null 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:

  1. SQL Server uložené procedury od Oracle®

  2. Mohu použít více kurzorů na jedno připojení s pyodbc a MS SQL Server?

  3. Chyba serveru SQL 109:V příkazu INSERT je více sloupců než hodnot zadaných v klauzuli VALUES

  4. Kolik místa na disku je potřeba k uložení hodnoty NULL pomocí postgresql DB?