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

Funkce RPAD() v Oracle

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 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 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) _______________ ___________________ ______________________ 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í 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:

  1. Jak šifrovat provoz databáze hybridního cloudu

  2. Jak generovat příkazy INSERT z dotazu při použití SQLcl (Oracle)

  3. Použití INNER JOIN ke kombinaci tabulek SQL Server a jejich zobrazení ve webových formulářích ASP.NET

  4. Postgresql nevytváří db s „createdb“ jako superuživatel, přesto nevypisuje chyby