Oracle
 sql >> Database >  >> RDS >> Oracle

Funzione RPAD() in Oracle

In Oracle, il RPAD() La funzione consente di riempire la parte destra di una stringa con un determinato carattere, fino a un numero di caratteri specificato.

Il modo in cui funziona è specificare la lunghezza della stringa risultante. Se la stringa originale è più corta, il carattere di riempimento riempie lo spazio rimanente.

Sintassi

La sintassi è questa:

RPAD(expr1 , n [, expr2 ])

Dove:

  • expr1 e expr2 può essere uno qualsiasi dei tipi di dati CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB o NCLOB .
  • n è un NUMBER intero o un valore che può essere convertito implicitamente in un NUMBER numero intero.

La funzione restituisce expr1 , con il riempimento a destra della lunghezza n caratteri con la sequenza di caratteri in expr2 .

Se expr2 viene omesso, il carattere di riempimento è un singolo spazio vuoto.

Esempio

Ecco un semplice esempio da dimostrare:

SELECT RPAD('Cat', 25)
FROM DUAL;

Risultato:

              RPAD('CAT',25) 
____________________________ 
Cat                         

Non è facile vedere l'effetto di questo esempio, perché abbiamo riempito la stringa con il carattere predefinito (uno spazio), ma ha avuto l'effetto di estendere la larghezza della colonna.

Di seguito è riportato un altro esempio che dimostra meglio l'effetto:

SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;

Risultato:

   RPAD('CAT',15)||'HOUSE' 
__________________________ 
Cat            House      

La concatenazione delle due stringhe rivela la quantità di riempimento che è stata applicata alla parte destra della stringa più a sinistra.

Nota che il numero fornito è la larghezza totale della stringa risultante – non la quantità di imbottitura.

Specifica un carattere

In questo esempio specifico un carattere da usare per il padding:

SELECT RPAD('Cat', 7, '!')
FROM DUAL;

Risultato:

   RPAD('CAT',7,'!') 
____________________ 
Cat!!!!             

Imbottitura più piccola della corda originale

Se il secondo argomento è minore della stringa originale, non viene aggiunto alcun riempimento e la stringa originale viene abbreviata al numero di caratteri specificato:

SELECT RPAD('Cat', 2)
FROM DUAL;

Risultato:

   RPAD('CAT',2) 
________________ 
Ca              

Esempio di database

Ecco un esempio di riempimento della parte destra dei valori in una colonna del database:

SELECT 
    country_name,
    RPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;

Risultato:

   COUNTRY_NAME          PADDED 
_______________ _______________ 
Argentina       Argentina...    
Australia       Australia...    
Belgium         Belgium.....    
Brazil          Brazil......    
Canada          Canada......   

Valori Nulli

Se uno qualsiasi degli argomenti è null il risultato è null :

SET NULL 'null';

SELECT 
    RPAD(null, 3),
    RPAD('Cat', null),
    RPAD('Cat', 3, null)
FROM DUAL;

Risultato:

   RPAD(NULL,3)    RPAD('CAT',NULL)    RPAD('CAT',3,NULL) 
_______________ ___________________ _____________________ 
null            null                null                 

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Conteggio argomenti errato

Chiamando RPAD() senza passare alcun argomento restituisce un errore:

SELECT RPAD()
FROM DUAL;

Risultato:

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:

E il passaggio del numero errato di argomenti genera un errore:

SELECT RPAD('Cat', 1, '>', 2)
FROM DUAL;

Risultato:

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: