W Oracle RPAD()
funkcja pozwala uzupełnić prawą 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:
RPAD(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
, z dopełnieniem prawym 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 RPAD('Cat', 25)
FROM DUAL;
Wynik:
RPAD('CAT',25) ____________________________ Cat
Nie jest łatwo zobaczyć efekt tego przykładu, ponieważ uzupełniliśmy ciąg domyślnym znakiem (spacją), ale spowodowało to wypchnięcie szerokości kolumny.
Poniżej znajduje się kolejny przykład, który lepiej demonstruje efekt:
SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;
Wynik:
RPAD('CAT',15)||'HOUSE' __________________________ Cat House
Łączenie dwóch ciągów ujawnia wielkość wypełnienia, które zostało zastosowane do prawej części skrajnego lewego ciągu.
Pamiętaj, że podana liczba to całkowita szerokość wynikowego ciągu – nie ilość dopełnienia.
Określ postać
W tym przykładzie określam znak, który ma być użyty do wypełnienia:
SELECT RPAD('Cat', 7, '!')
FROM DUAL;
Wynik:
RPAD('CAT',7,'!') ____________________ 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 RPAD('Cat', 2)
FROM DUAL;
Wynik:
RPAD('CAT',2) ________________ Ca
Przykład bazy danych
Oto przykład wypełnienia prawej części wartości w kolumnie bazy danych:
SELECT
country_name,
RPAD(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
RPAD(null, 3),
RPAD('Cat', null),
RPAD('Cat', 3, null)
FROM DUAL;
Wynik:
RPAD(NULL,3) RPAD('CAT',NULL) RPAD('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 RPAD()
bez przekazywania żadnych argumentów zwraca błąd:
SELECT RPAD()
FROM DUAL;
Wynik:
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:
A przekazanie niewłaściwej liczby argumentów skutkuje błędem:
SELECT RPAD('Cat', 1, '>', 2)
FROM DUAL;
Wynik:
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: