×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
表示したい文字列の前後に何かの文字列を追加したい場合はたまにあると思います。 例えば、空白を埋めたりする場合です。
MySQL では文字列の先頭から追加する方法として LPAD 関数、後ろから追加する関数として RPAD があります。
なお、これらの関数はマルチバイトセーフです。
LPAD、RPAD 関数の説明は以下の通りです。
■[LPAD、RPAD関数]の説明
LPAD(str, len, padstr) -- str : 対象文字列(str が len よりも長い場合は、戻り値は len 文字に短縮されます。) -- len : 最終的な文字列の長さ -- padstr : 先頭から追加(パディング)する文字列 RPAD(str,len,padstr) -- str : 対象文字列(str が len よりも長い場合は、戻り値は len 文字に短縮されます。) -- len : 最終的な文字列の長さ -- padstr : 右に追加(パディング)する文字列
それでは順次、FORMAT 関数の使用例を示します。
■[LPAD、RPAD関数]の例
MariaDB [(none)]> SELECT -> LPAD('123', 5, '**') -> ,LPAD('123', 2, '**') -> ,RPAD('123', 5, '*') -> ,RPAD('123', 2, '*') -> ,RPAD('', 10, '*') -> ; +----------------------+----------------------+---------------------+---------------------+-------------------+ | LPAD('123', 5, '**') | LPAD('123', 2, '**') | RPAD('123', 5, '*') | RPAD('123', 2, '*') | RPAD('', 10, '*') | +----------------------+----------------------+---------------------+---------------------+-------------------+ | **123 | 12 | 123** | 12 | ********** | +----------------------+----------------------+---------------------+---------------------+-------------------+ 1 row in set (0.00 sec)
最初の例では先頭から「**」が追加されていますが、 2番目の例では対象文字列が指定文字列長より短いので、先頭から文字列長分しか表示されません。
3番目の例では後ろから「**」が追加されていますが、 4番目の例では対象文字列が指定文字列長より短いので、先頭から文字列長分しか表示されません。
なお、対象文字列を空文字列にしてパディングを行うと、指定文字分の繰り返しが可能になります。 (そこまで必要性はありませんが)
それでは、マルチバイトセーフの例を示します。 (上記の例の文字列をマルチバイトに変更して実行)
MariaDB [(none)]> SELECT -> LPAD('123', 5, '**') -> ,LPAD('123', 2, '**') -> ,RPAD('123', 5, '*') -> ,RPAD('123', 2, '*') -> ,RPAD('', 10, '*') -> ; +---------------------------+---------------------------+-------------------------+-------------------------+----------------------+ | LPAD('123', 5, '**') | LPAD('123', 2, '**') | RPAD('123', 5, '*') | RPAD('123', 2, '*') | RPAD('', 10, '*') | +---------------------------+---------------------------+-------------------------+-------------------------+----------------------+ | **123 | 12 | 123** | 12 | ********** | +---------------------------+---------------------------+-------------------------+-------------------------+----------------------+ 1 row in set (0.01 sec)
PR
コメント