メインコンテンツまでスキップ
バージョン: 26.x

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

  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. Tableカラムの配置
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 |
+------------------------+------------------------+