Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja LPAD() w Oracle

W Oracle LPAD() funkcja pozwala dopełnić lewą część ciągu określonym znakiem, do określonej liczby znaków.

Działa to tak, że określasz, jak długi powinien być łańcuch wynikowy. Jeśli oryginalny ciąg jest krótszy, znak wypełniający wypełnia pozostałą przestrzeń.

Składnia

Składnia wygląda tak:

LPAD(expr1, n [, expr2 ])

Gdzie:

  • expr1 i expr2 może być dowolnym typem danych CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB lub NCLOB .
  • n to NUMBER liczba całkowita lub wartość, którą można niejawnie przekonwertować na NUMBER liczba całkowita.

Funkcja zwraca expr1 , dopełnione z lewej strony do długości n znaki z sekwencją znaków w expr2 .

Jeśli expr2 zostanie pominięty, znak dopełniający jest pojedynczym odstępem.

Przykład

Oto prosty przykład do zademonstrowania:

SELECT LPAD('Cat', 5)
FROM DUAL;

Wynik:

   LPAD('CAT',5) 
________________ 
  Cat           

Pamiętaj, że podana liczba to całkowita szerokość wynikowego ciągu – nie ilość wypełnienia.

Oto znowu w porównaniu z oryginalnym (niewypełnionym) ciągiem:

SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;

Wynik:

   LPAD('CAT',5) 
________________ 
  Cat            
Cat             

Określ postać

W tym przykładzie określam znak, który ma być użyty do wypełnienia:

SELECT LPAD('Cat', 5, '>')
FROM DUAL;

Wynik:

   LPAD('CAT',5,'>') 
____________________ 
>>Cat               

Dopełnienie mniejsze niż oryginalny ciąg

Jeśli drugi argument jest mniejszy niż oryginalny ciąg, nie jest dodawane żadne uzupełnienie, a oryginalny ciąg jest skracany do określonej liczby znaków:

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

Wynik:

   LPAD('CAT',2) 
________________ 
Ca              

Przykład bazy danych

Oto przykład wypełniania lewej części wartości w kolumnie bazy danych:

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

Wynik:

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

Wartości puste

Jeśli którykolwiek z argumentów jest null wynik to null :

SET NULL 'null';

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

Wynik:

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

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Nieprawidłowa liczba argumentów

Wywołanie LPAD() bez przekazywania żadnych argumentów zwraca błąd:

SELECT LPAD()
FROM DUAL;

Wynik:

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:

A przekazanie niewłaściwej liczby argumentów skutkuje błędem:

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

Wynik:

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zatrzymaj się przy błędzie kompilacji w skrypcie sqlplus

  2. Nie znaleziono klienta Oracle i komponentów sieciowych

  3. Wstawianie wielu wierszy do Oracle

  4. Włączanie TLS w R12.1

  5. Monitorowanie SQL w SQL Developer