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

Funzione LPAD() in Oracle

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 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 , 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: