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
iexpr2
może być dowolnym typem danychCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
lubNCLOB
.n
toNUMBER
liczba całkowita lub wartość, którą można niejawnie przekonwertować naNUMBER
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: