Последнее обновление
RPAD
Описание
Функция RPAD (Right Padding) дополняет строку справа указанными символами до заданной длины. Если заданная длина меньше длины исходной строки, строка усекается. Эта функция рассчитывает длину в символах, а не в байтах.
Синтаксис
RPAD(<str>, <len>, <pad>)
Параметры
| Параметр | Описание |
|---|---|
<str> | Исходная строка, которую нужно дополнить. Тип: VARCHAR |
<len> | Заданная длина в символах (не в байтах). Тип: INT |
<pad> | Строка, используемая для дополнения. Тип: VARCHAR |
Возвращаемое значение
Возвращает значение типа VARCHAR, представляющее дополненную или усечённую строку.
Правила дополнения:
- Если len > длины исходной строки: строка pad повторно добавляется справа, пока общая длина не достигнет len
- Если len = длине исходной строки: возвращается исходная строка
- Если len < длины исходной строки: строка усекается, возвращаются только первые len символов
- Строка pad используется циклически; при необходимости берётся только часть её символов
- Длина рассчитывается в символах, поддерживаются многобайтовые символы UTF-8
Особые случаи:
- Если любой из параметров равен NULL, возвращается NULL
- Если pad — пустая строка и len > длины str, возвращается пустая строка
- Если len равен 0, возвращается пустая строка
- Если len отрицателен, возвращается NULL
Примеры
- Простое дополнение справа
SELECT RPAD('hi', 5, 'xy'), RPAD('hello', 8, '*');
+---------------------+-----------------------+
| RPAD('hi', 5, 'xy') | RPAD('hello', 8, '*') |
+---------------------+-----------------------+
| hixyx | hello*** |
+---------------------+-----------------------+
- Усечение строки
SELECT RPAD('hello', 1, ''), RPAD('hello world', 5, 'x');
+----------------------+------------------------------+
| RPAD('hello', 1, '') | RPAD('hello world', 5, 'x') |
+----------------------+------------------------------+
| h | hello |
+----------------------+------------------------------+
- Обработка значений NULL
SELECT RPAD(NULL, 5, 'x'), RPAD('hi', NULL, 'x'), RPAD('hi', 5, NULL);
+---------------------+------------------------+----------------------+
| RPAD(NULL, 5, 'x') | RPAD('hi', NULL, 'x') | RPAD('hi', 5, NULL) |
+---------------------+------------------------+----------------------+
| NULL | NULL | NULL |
+---------------------+------------------------+----------------------+
- Пустая строка и нулевая длина
SELECT RPAD('', 0, ''), RPAD('hi', 0, 'x'), RPAD('', 5, '*');
+-----------------+-------------------+--------------------+
| RPAD('', 0, '') | RPAD('hi', 0, 'x') | RPAD('', 5, '*') |
+-----------------+-------------------+--------------------+
| | | ***** |
+-----------------+-------------------+--------------------+
- Пустая строка дополнения
SELECT RPAD('hello', 10, ''), RPAD('hi', 2, '');
+-----------------------+-------------------+
| RPAD('hello', 10, '') | RPAD('hi', 2, '') |
+-----------------------+-------------------+
| | hi |
+-----------------------+-------------------+
- Длинная строка дополнения и циклическое повторение
SELECT RPAD('hello', 10, 'world'), RPAD('X', 7, 'ABC');
+----------------------------+----------------------+
| RPAD('hello', 10, 'world') | RPAD('X', 7, 'ABC') |
+----------------------------+----------------------+
| helloworld | XABCABC |
+----------------------------+----------------------+
- Дополнение многобайтовыми символами UTF-8
SELECT RPAD('hello', 10, 'ṭṛì'), RPAD('ḍḍumai', 3, 'x');
+---------------------------+--------------------------+
| RPAD('hello', 10, 'ṭṛì') | RPAD('ḍḍumai', 3, 'x') |
+---------------------------+--------------------------+
| helloṭṛìṭṛ | ḍḍu |
+---------------------------+--------------------------+
- Форматирование строк с числами
SELECT RPAD('$99', 8, '.'), RPAD('Item1', 10, ' ');
+---------------------+------------------------+
| RPAD('$99', 8, '.') | RPAD('Item1', 10, ' ') |
+---------------------+------------------------+
| $99..... | Item1 |
+---------------------+------------------------+
- Выравнивание столбцов таблицы
SELECT RPAD('Name', 15, ' '), RPAD('Price', 10, ' ');
+------------------------+------------------------+
| RPAD('Name', 15, ' ') | RPAD('Price', 10, ' ') |
+------------------------+------------------------+
| Name | Price |
+------------------------+------------------------+
- Обработка отрицательной длины
SELECT RPAD('hello', -1, 'x'), RPAD('test', -5, '*');
+------------------------+------------------------+
| RPAD('hello', -1, 'x') | RPAD('test', -5, '*') |
+------------------------+------------------------+
| NULL | NULL |
+------------------------+------------------------+