RPAD
説明
RPAD関数(Right Padding)は、文字列の右側に指定した文字を埋め込んで、指定した長さになるまでパディングするために使用されます。対象の長さが元の文字列の長さより短い場合、文字列は切り詰められます。この関数は、バイト長ではなく文字長で計算します。
構文
RPAD(<str>, <len>, <pad>)
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | パディング対象のソース文字列。型: VARCHAR |
<len> | 目標文字長(バイト長ではない)。型: INT |
<pad> | パディングに使用する文字列。型: VARCHAR |
戻り値
VARCHAR型を返し、パディングまたは切り詰めされた文字列を表します。
パディングルール:
- len > 元の文字列長の場合: 全体の長さがlenに達するまで、右側にpad文字列を繰り返しパディングする
- 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 |
+---------------------+------------------------+
- Tableカラムの配置
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 |
+------------------------+------------------------+