In Oracle, il LPAD()
la funzione ti consente di tamponare la parte sinistra di una stringa con un determinato carattere, fino a un numero specificato di caratteri.
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:
LPAD(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
, riempito a sinistra alla 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 LPAD('Cat', 5)
FROM DUAL;
Risultato:
LPAD('CAT',5) ________________ Cat
Nota che il numero fornito è la larghezza totale della stringa risultante – non la quantità di riempimento.
Eccolo di nuovo rispetto alla stringa originale (non riempita):
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Risultato:
LPAD('CAT',5) ________________ Cat Cat
Specifica un carattere
In questo esempio specifico un carattere da usare per il padding:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Risultato:
LPAD('CAT',5,'>') ____________________ >>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 LPAD('Cat', 2)
FROM DUAL;
Risultato:
LPAD('CAT',2) ________________ Ca
Esempio di database
Ecco un esempio di riempimento della parte sinistra dei valori in una colonna del database:
SELECT
country_name,
LPAD(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
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Risultato:
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('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 LPAD()
senza passare alcun argomento restituisce un errore:
SELECT LPAD()
FROM DUAL;
Risultato:
Error starting at line : 1 in command - SELECT LPAD() 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 LPAD('Cat', 1, '>', 2)
FROM DUAL;
Risultato:
Error starting at line : 1 in command - SELECT LPAD('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: