メインコンテンツまでスキップ
に最終更新

RPAD

説明​

RPAD関数(右側パディング)は、指定した長さになるまで文字列の右側に指定した文字を追加します。指定した長さが元の文字列より短い場合は、文字列を切り詰めます。この関数はバイト長ではなく文字数で長さを計算します。

構文​

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を返します

使用例​

  1. 基本的な右側パディング
SELECT RPAD('hi', 5, 'xy'), RPAD('hello', 8, '*');
+---------------------+-----------------------+
| RPAD('hi', 5, 'xy') | RPAD('hello', 8, '*') |
+---------------------+-----------------------+
| hixyx | hello*** |
+---------------------+-----------------------+
  1. 文字列の切り詰め
SELECT RPAD('hello', 1, ''), RPAD('hello world', 5, 'x');
+----------------------+------------------------------+
| RPAD('hello', 1, '') | RPAD('hello world', 5, 'x') |
+----------------------+------------------------------+
| h | hello |
+----------------------+------------------------------+
  1. 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 |
+---------------------+------------------------+----------------------+
  1. 空文字列と長さゼロ
SELECT RPAD('', 0, ''), RPAD('hi', 0, 'x'), RPAD('', 5, '*');
+-----------------+-------------------+--------------------+
| RPAD('', 0, '') | RPAD('hi', 0, 'x') | RPAD('', 5, '*') |
+-----------------+-------------------+--------------------+
| | | ***** |
+-----------------+-------------------+--------------------+
  1. 空のパディング文字列
SELECT RPAD('hello', 10, ''), RPAD('hi', 2, '');
+-----------------------+-------------------+
| RPAD('hello', 10, '') | RPAD('hi', 2, '') |
+-----------------------+-------------------+
| | hi |
+-----------------------+-------------------+
  1. 長いパディング文字列と繰り返し
SELECT RPAD('hello', 10, 'world'), RPAD('X', 7, 'ABC');
+----------------------------+----------------------+
| RPAD('hello', 10, 'world') | RPAD('X', 7, 'ABC') |
+----------------------------+----------------------+
| helloworld | XABCABC |
+----------------------------+----------------------+
  1. UTF-8のマルチバイト文字によるパディング
SELECT RPAD('hello', 10, 'ṭṛì'), RPAD('ḍḍumai', 3, 'x');
+---------------------------+--------------------------+
| RPAD('hello', 10, 'ṭṛì') | RPAD('ḍḍumai', 3, 'x') |
+---------------------------+--------------------------+
| helloṭṛìṭṛ | ḍḍu |
+---------------------------+--------------------------+
  1. 数値を表す文字列の書式設定
SELECT RPAD('$99', 8, '.'), RPAD('Item1', 10, ' ');
+---------------------+------------------------+
| RPAD('$99', 8, '.') | RPAD('Item1', 10, ' ') |
+---------------------+------------------------+
| $99..... | Item1 |
+---------------------+------------------------+
  1. 表の列の整列
SELECT RPAD('Name', 15, ' '), RPAD('Price', 10, ' ');
+------------------------+------------------------+
| RPAD('Name', 15, ' ') | RPAD('Price', 10, ' ') |
+------------------------+------------------------+
| Name | Price |
+------------------------+------------------------+
  1. 負の長さの処理
SELECT RPAD('hello', -1, 'x'), RPAD('test', -5, '*');
+------------------------+------------------------+
| RPAD('hello', -1, 'x') | RPAD('test', -5, '*') |
+------------------------+------------------------+
| NULL | NULL |
+------------------------+------------------------+