В MariaDB, LPAD()
е вградена функция за низ, която допълва лявата част на низ с определен брой символи.
Например, можете да използвате LPAD()
за допълване на лявата част на низ с интервали. Или можете да допълните число с водещи нули.
Синтаксис
Синтаксисът е така:
LPAD(str, len [, padstr])
Където str
е низът към подложка и len
е броят на знаците, до който трябва да се добави низът. Обърнете внимание, че това не е самото количество запълване, а общият брой знаци, които ще има върнатият низ, след като е бил допълнен.
padstr
е незадължителен аргумент, който определя кой знак да се използва за допълването.
Пример
Ето един основен пример:
SELECT LPAD('Lion', 8);
Резултат:
+-----------------+ | LPAD('Lion', 8) | +-----------------+ | Lion | +-----------------+
В този случай не посочихме трети аргумент (за символа за допълване) и затова беше използвано интервал. Знакът за интервал е символът по подразбиране.
Посочете символ за подреждане
Ето пример, който използва трети аргумент. Това указва какъв знак да се използва за запълване:
SELECT LPAD('Lion', 8, '.');
Резултат:
+----------------------+ | LPAD('Lion', 8, '.') | +----------------------+ | ....Lion | +----------------------+
Точките ни позволяват да виждаме подпълването по-ясно.
Числа за допълване
Ето пример за допълване на число с нули:
SELECT LPAD(7, 3, 0);
Резултат:
+---------------+ | LPAD(7, 3, 0) | +---------------+ | 007 | +---------------+
Подпълване, по-малко от оригиналния низ
Ако вторият аргумент е по-малък от оригиналния низ, тогава не се добавя допълване и оригиналният низ се съкращава до посочения брой знаци:
SELECT LPAD('Lion', 2);
Резултат:
+-----------------+ | LPAD('Lion', 2) | +-----------------+ | Li | +-----------------+
Примери за бази данни
Ето пример за допълване на лявата част на стойностите в колона на база данни:
SELECT
LPAD(PetName, 15, '.') AS "Padded Name",
PetName AS "Original Name"
FROM Pets;
Резултат:
+-----------------+---------------+ | Padded Name | Original Name | +-----------------+---------------+ | .........Fluffy | Fluffy | | ..........Fetch | Fetch | | ........Scratch | Scratch | | ............Wag | Wag | | ..........Tweet | Tweet | | .........Fluffy | Fluffy | | ...........Bark | Bark | | ...........Meow | Meow | +-----------------+---------------+
Ето още един пример, който допълва ценова колона:
SELECT
ProductId,
ProductPrice,
LPAD(ProductPrice, 8, 0)
FROM Products;
Резултат:
+-----------+--------------+--------------------------+ | ProductId | ProductPrice | LPAD(ProductPrice, 8, 0) | +-----------+--------------+--------------------------+ | 1 | 25.99 | 00025.99 | | 2 | 25.99 | 00025.99 | | 3 | 14.75 | 00014.75 | | 4 | 11.99 | 00011.99 | | 5 | 33.49 | 00033.49 | | 6 | 245.00 | 00245.00 | | 7 | 55.99 | 00055.99 | | 8 | 9.99 | 00009.99 | +-----------+--------------+--------------------------+
Нулеви аргументи
Ако някой (или всички) от аргументите са null
, LPAD()
функцията връща null
:
SELECT
LPAD(null, 10, '.'),
LPAD('Coffee', null, '.'),
LPAD('Coffee', 10, null);
Резултат:
+---------------------+---------------------------+--------------------------+ | LPAD(null, 10, '.') | LPAD('Coffee', null, '.') | LPAD('Coffee', 10, null) | +---------------------+---------------------------+--------------------------+ | NULL | NULL | NULL | +---------------------+---------------------------+--------------------------+
Режим Oracle
Когато не работи в режим на Oracle, ако резултатът е празен (т.е. има дължина нула), резултатът е празен низ.
Въпреки това, когато работите в режим на Oracle, резултатът е null
.
Тук е в режим по подразбиране (т.е. не в режим на Oracle):
SELECT LPAD('', 0);
Резултат:
+-------------+ | LPAD('', 0) | +-------------+ | | +-------------+
Сега нека преминем към режим на Oracle:
SET SQL_MODE=ORACLE;
И стартирайте кода отново:
SELECT LPAD('', 0);
Резултат:
+-------------+ | LPAD('', 0) | +-------------+ | NULL | +-------------+
Липсващи аргументи
Извикване на LPAD()
без поне два аргумента води до грешка:
SELECT LPAD('Coffee');
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'
Същото се случва и при извикване на LPAD()
без никакви аргументи:
SELECT LPAD();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LPAD'