に最終更新
LPAD
説明
LPAD 関数(左側のパディング)は、指定した長さになるまで文字列の左側を指定した文字列で埋めます。指定した長さが元の文字列より短い場合は、文字列を切り詰めます。
構文
LPAD(<str>, <len>, <pad>)
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 埋める対象の文字列。型: VARCHAR |
<len> | 目標とする文字列の文字数(バイト数ではありません)。型: INT |
<pad> | 埋めるために使用する文字列。型: VARCHAR |
戻り値
文字を埋めた、または切り詰めた文字列を VARCHAR 型で返します。
文字列を埋める際の規則:
- len が元の文字列の長さより大きい場合: 全体の長さが len になるまで、pad の文字列を左側に繰り返し追加します
- 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 |
+------------------------+-----------------------+