MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで文字列を別の文字列で埋める方法|LPAD()とRPAD()関数の使い方

MySQLで文字列をパディングするための2つの関数

MySQLには、文字列を別の文字列で埋める(パディングする)ための関数として、LPAD()RPAD()の2つが用意されています。それぞれ左側・右側から指定の文字列を挿入し、目的の長さまで文字列を調整することができます。

LPAD()関数:左側に文字列を埋める

名前の通り、LPAD()関数は元の文字列の左側に別の文字列を埋め込みます。MySQLでの構文は以下の通りです。

構文

LPAD(original_string, @length, pad_string)

各引数の意味は次の通りです。

  • original_string:パディング対象となる元の文字列
  • @length:パディング後に返される文字列の合計長
  • pad_string:元の文字列に埋め込む文字列

使用例

mysql> Select LPAD('My name is Ram',22,'* ');
+--------------------------------+
| LPAD('My name is Ram',22,'* ') |
+--------------------------------+
| * * * * My name is Ram         |
+--------------------------------+
1 row in set (0.00 sec)

この例では、「My name is Ram」という15文字の文字列が、指定した全長22文字に達するまで左側に「* 」が繰り返し挿入されています。

RPAD()関数:右側に文字列を埋める

同様に、RPAD()関数は元の文字列の右側に別の文字列を埋め込みます。構文は以下の通りです。

構文

RPAD(original_string, @length, pad_string)

引数の意味はLPAD()とまったく同じです。

  • original_string:パディング対象となる元の文字列
  • @length:パディング後に返される文字列の合計長
  • pad_string:元の文字列に埋め込む文字列

使用例

mysql> Select RPAD('My name is Ram',22,'* ');
+--------------------------------+
| RPAD('My name is Ram',22,'* ') |
+--------------------------------+
| My name is Ram* * * *          |
+--------------------------------+
1 row in set (0.00 sec)

利用時の注意点

指定した@lengthが元の文字列の長さより短い場合、LPAD()・RPAD()どちらの場合も、文字列は右側から切り詰められて指定された長さになります。また、pad_stringに空文字列を指定するとNULLが返される点にも注意が必要です。IDやコードの桁数を揃えたい場合などに、これらの関数は非常に便利です。

  1. MySQLで「&」を「&」に置き換える方法を解説

    MySQLで「&」を「&」に置き換える方法データベースにHTMLエンティティ形式の「&」が保存されており、これを通常のアンパサンド「&」に変換したいケースはよくあります。そんなときは、MySQLのREPLACE()関数を使えば簡単に解決できます。REPLACE()関数は、文字列の中から指定した部分文字列を検索し、別の文字列に置き換えることができる便利な関数です。ここでは、サンプルテーブルを使いながら、実際の置き換え手順を順番に解説していきます。手順1:サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。mysql> cre

  2. MySQLでカンマ区切りの数値文字列を合計する方法を解説

    MySQLでは、カンマ区切りの数値文字列を合計するためのカスタム関数を自作することができます。本記事では、テーブルの作成から関数の定義、実際の実行まで、手順を追ってわかりやすく解説します。1. テーブルの作成まず、varchar型のカラムを持つテーブルを作成します。このカラムには、数値を文字列の形式(カンマ区切り)で格納していきます。mysql> create table DemoTable  -> (  -> ListOfValues varchar(50)  -> );Query OK, 0 rows affected (0.56 sec)2. テストデータの挿入I