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
eexpr2
può essere uno qualsiasi dei tipi di datiCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
oNCLOB
.n
è unNUMBER
intero o un valore che può essere convertito implicitamente in unNUMBER
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: