В Oracle, LPAD()
функцията ви позволява да допълните лявата част на низ с определен знак до определен брой знаци.
Начинът, по който работи, е, че вие определяте колко дълъг трябва да бъде полученият низ. Ако оригиналният низ е по-къс, символът за допълване запълва оставащото пространство.
Синтаксис
Синтаксисът е така:
LPAD(expr1, n [, expr2 ])
Къде:
expr1
иexpr2
може да бъде всеки от типовете данниCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
илиNCLOB
.n
еNUMBER
цяло число или стойност, която може да бъде имплицитно преобразувана вNUMBER
цяло число.
Функцията връща expr1
, допълнено отляво до дължина n
знаци с последователността от знаци в expr2
.
Ако expr2
е пропуснат, символът за допълване е едно празно място.
Пример
Ето един прост пример за демонстрация:
SELECT LPAD('Cat', 5)
FROM DUAL;
Резултат:
LPAD('CAT',5) ________________ Cat
Имайте предвид, че предоставеното число е общата ширина на резултантния низ – не количеството запълване.
Ето го отново в сравнение с оригиналния (неподплатен) низ:
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Резултат:
LPAD('CAT',5) ________________ Cat Cat
Посочете знак
В този пример посочвам символ, който да използвам за запълване:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Резултат:
LPAD('CAT',5,'>') ____________________ >>Cat
Подпълване, по-малко от оригиналния низ
Ако вторият аргумент е по-малък от оригиналния низ, тогава не се добавя допълване и оригиналният низ се съкращава до посочения брой знаци:
SELECT LPAD('Cat', 2)
FROM DUAL;
Резултат:
LPAD('CAT',2) ________________ Ca
Пример за база данни
Ето пример за допълване на лявата част на стойностите в колона на база данни:
SELECT
country_name,
LPAD(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
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Резултат:
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('CAT',3,NULL) _______________ ___________________ _____________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Неправилен брой аргументи
Извикване на LPAD()
без подаване на аргументи връща грешка:
SELECT LPAD()
FROM DUAL;
Резултат:
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:
И предаването на грешен брой аргументи води до грешка:
SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL;
Резултат:
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: