MySQLのLPAD()・RPAD()関数:元の文字列が指定した長さより長い場合の戻り値とは?
LPAD()・RPAD()関数とは
まず基本をおさらいしておきましょう。MySQLのLPAD()関数は文字列の左側を、RPAD()関数は右側を、指定した文字で埋め込んで(パディングして)、指定した長さの文字列を返す関数です。
- LPAD(文字列, 長さ, 埋め込み文字):左側に埋め込み文字を追加
- RPAD(文字列, 長さ, 埋め込み文字):右側に埋め込み文字を追加
元の文字列が指定した長さより長い場合の動作
元の文字列の長さが、引数として指定した長さよりも大きい場合、MySQLは一切パディングを行いません。その代わりに、LPAD()またはRPAD()関数の引数で指定された長さまで、元の文字列を切り詰めて返します。
実行例
mysql> Select LPAD('ABCD',3,'*');
+--------------------+
| LPAD('ABCD',3,'*') |
+--------------------+
| ABC |
+--------------------+
1 row in set (0.00 sec)
mysql> Select RPAD('ABCD',3,'*');
+--------------------+
| RPAD('ABCD',3,'*') |
+--------------------+
| ABC |
+--------------------+
1 row in set (0.00 sec)
結果のポイント
上記の例からわかるように、両方の関数とも「*」によるパディングは一切行われず、引数として指定された長さ(この例では3)まで元の文字列「ABCD」が切り詰められ、「ABC」が返されています。
- LPAD()とRPAD()のどちらを使っても、結果は同じ「ABC」になります
- エラーにはならず、先頭から指定した文字数分だけが返される
まとめ
LPAD()・RPAD()関数は、元の文字列が指定した長さより短い場合はパディングを行い、長い場合は切り詰めるという動作をします。つまり、常に引数で指定した長さの文字列が返されることが保証されているため、IDやコードなどの固定長データの整形処理において非常に便利な関数です。
-
MySQL INTERVAL()関数:引数リストに第1引数より大きい数値がない場合に返される値とは?
INTERVAL()関数の戻り値の挙動MySQLのINTERVAL()関数は、引数リストの中に第1引数より大きい数値がひとつも存在しない場合、「引数リスト内の最後の数値のインデックス番号+1」を返します。言い換えれば、リストの末尾のインデックス番号に1を加えた値が戻り値となるのです。具体的な動作例以下の例では、第1引数として「50」を指定し、比較対象の数値リストとして「20、32、38、40」を渡しています。このリストには50より大きい数値が存在しないため、関数は「4」を返します。mysql> Select INTERVAL(50,20,32,38,40); +-------------
-
MySQLのINTERVAL()関数で第1引数にNULLを指定した場合の戻り値とは?
INTERVAL()関数の第1引数がNULLだった場合の戻り値MySQLのINTERVAL()関数は、第1引数と残りの引数リストを比較し、第1引数の値がどこまで続く範囲に該当するかを示すインデックスを返す関数です。そして重要なポイントとして、第1引数にNULLを指定した場合、戻り値は必ず-1になります。実際の動作を以下の例で確認してみましょう。mysql> Select INTERVAL(NULL,20,32,38,40,50,55);+--------------------------------------+| INTERVAL(NULL,20,32,38,40,50,55)