Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция RPAD() в Oracle

В Oracle, RPAD() функцията ви позволява да добавите дясната част на низ с определен знак до определен брой знаци.

Начинът, по който работи, е, че вие ​​определяте колко дълъг трябва да бъде полученият низ. Ако оригиналният низ е по-къс, символът за допълване запълва оставащото пространство.

Синтаксис

Синтаксисът е така:

RPAD(expr1 , n [, expr2 ])

Къде:

  • expr1 и expr2 може да бъде всеки от типовете данни CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB или NCLOB .
  • n е NUMBER цяло число или стойност, която може да бъде имплицитно преобразувана в NUMBER цяло число.

Функцията връща expr1 , подплатен отдясно до дължина n знаци с последователността от знаци в expr2 .

Ако expr2 е пропуснат, символът за допълване е едно празно място.

Пример

Ето един прост пример за демонстрация:

SELECT RPAD('Cat', 25)
FROM DUAL;

Резултат:

              RPAD('CAT',25) 
____________________________ 
Cat                         

Не е лесно да се види ефекта от този пример, защото допълнихме низа със знак по подразбиране (интервал), но това имаше ефект на изтласкване на ширината на колоната.

По-долу е друг пример, който демонстрира ефекта по-добре:

SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;

Резултат:

   RPAD('CAT',15)||'HOUSE' 
__________________________ 
Cat            House      

Свързването на двата низа разкрива количеството запълване, което е било приложено към дясната част на най-левия низ.

Имайте предвид, че предоставеното число е общата ширина на резултантния низ – не количеството подплънки.

Посочете знак

В този пример посочвам символ, който да използвам за запълване:

SELECT RPAD('Cat', 7, '!')
FROM DUAL;

Резултат:

   RPAD('CAT',7,'!') 
____________________ 
Cat!!!!             

Подпълване, по-малко от оригиналния низ

Ако вторият аргумент е по-малък от оригиналния низ, тогава не се добавя допълване и оригиналният низ се съкращава до посочения брой знаци:

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

Резултат:

   RPAD('CAT',2) 
________________ 
Ca              

Пример за база данни

Ето пример за допълване на дясната част от стойностите в колона на база данни:

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

Резултат:

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

Нулеви стойности

Ако някой от аргументите е null резултатът е null :

SET NULL 'null';

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

Резултат:

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

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Неправилен брой аргументи

Извикване на RPAD() без подаване на аргументи връща грешка:

SELECT RPAD()
FROM DUAL;

Резултат:

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:

И предаването на грешен брой аргументи води до грешка:

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

Резултат:

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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle преобразува времето на unix епоха до дата

  2. Функция NEXT_DAY() в Oracle

  3. Oracle 11g - Проверете ограничението с RegEx

  4. Промиване на единичен курсор

  5. Функция TANH() в Oracle