Последнее обновление
LPAD
Описание
Функция LPAD (Left Padding) дополняет строку слева указанными символами до заданной длины. Если заданная длина меньше длины исходной строки, строка усекается.
Синтаксис
LPAD(<str>, <len>, <pad>)
Параметры
| Параметр | Описание |
|---|---|
<str> | Исходная строка, которую нужно дополнить. Тип: VARCHAR |
<len> | Целевая длина строки в символах (не в байтах). Тип: INT |
<pad> | Строка, используемая для дополнения. Тип: VARCHAR |
Возвращаемое значение
Возвращает значение типа VARCHAR, представляющее дополненную или усечённую строку.
Правила дополнения:
- Если len > длина исходной строки: строка pad многократно добавляется слева, пока общая длина не достигнет len
- Если len = длина исходной строки: возвращается исходная строка
- Если len < длина исходной строки: строка усекается, возвращаются только первые len символов
- Длина рассчитывается в символах, поддерживаются многобайтовые символы UTF-8
Особые случаи:
- Если любой из параметров равен NULL, возвращается NULL
- Если pad является пустой строкой и len > длина str, возвращается пустая строка
- Если len равен 0, возвращается пустая строка
- Если len отрицателен, возвращается NULL
Примеры
- Простое дополнение слева
SELECT LPAD('hi', 5, 'xy'), LPAD('hello', 8, '*');
+---------------------+-----------------------+
| LPAD('hi', 5, 'xy') | LPAD('hello', 8, '*') |
+---------------------+-----------------------+
| xyxhi | ***hello |
+---------------------+-----------------------+
- Усечение строки
SELECT LPAD('hi', 1, 'xy'), LPAD('hello world', 5, 'x');
+---------------------+------------------------------+
| LPAD('hi', 1, 'xy') | LPAD('hello world', 5, 'x') |
+---------------------+------------------------------+
| h | hello |
+---------------------+------------------------------+
- Обработка значений NULL
SELECT LPAD(NULL, 5, 'x'), LPAD('hi', NULL, 'x'), LPAD('hi', 5, NULL);
+---------------------+------------------------+----------------------+
| LPAD(NULL, 5, 'x') | LPAD('hi', NULL, 'x') | LPAD('hi', 5, NULL) |
+---------------------+------------------------+----------------------+
| NULL | NULL | NULL |
+---------------------+------------------------+----------------------+
- Пустая строка и нулевая длина
SELECT LPAD('', 0, ''), LPAD('hi', 0, 'x'), LPAD('', 5, '*');
+-----------------+--------------------+------------------+
| LPAD('', 0, '') | LPAD('hi', 0, 'x') | LPAD('', 5, '*') |
+-----------------+--------------------+------------------+
| | | ***** |
+-----------------+--------------------+------------------+
- Пустая строка дополнения
SELECT LPAD('hello', 10, ''), LPAD('hi', 2, '');
+-----------------------+-------------------+
| LPAD('hello', 10, '') | LPAD('hi', 2, '') |
+-----------------------+-------------------+
| | hi |
+-----------------------+-------------------+
- Более длинная строка дополнения (повторяется до достижения длины len)
SELECT LPAD('123', 10, 'abc'), LPAD('X', 7, 'HELLO');
+------------------------+-----------------------+
| LPAD('123', 10, 'abc') | LPAD('X', 7, 'HELLO') |
+------------------------+-----------------------+
| abcabca123 | HELLOHX |
+------------------------+-----------------------+
- Дополнение многобайтовыми символами UTF-8
SELECT LPAD('hello', 10, 'ṭṛì'), LPAD('ḍḍumai', 3, 'x');
+-------------------------------+----------------------------+
| LPAD('hello', 10, 'ṭṛì') | LPAD('ḍḍumai', 3, 'x') |
+-------------------------------+----------------------------+
| ṭṛìṭṛhello | ḍḍu |
+-------------------------------+----------------------------+
- Дополнение числовых строк нулями
SELECT LPAD('42', 6, '0'), LPAD('1234', 8, '0');
+--------------------+----------------------+
| LPAD('42', 6, '0') | LPAD('1234', 8, '0') |
+--------------------+----------------------+
| 000042 | 00001234 |
+--------------------+----------------------+
- Отрицательная длина
SELECT LPAD('hello', -1, 'x'), LPAD('test', -5, '*');
+------------------------+-----------------------+
| LPAD('hello', -1, 'x') | LPAD('test', -5, '*') |
+------------------------+-----------------------+
| NULL | NULL |
+------------------------+-----------------------+