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

MySQLでテーブルの列(カラム)の値から部分文字列を抽出する方法

MySQLのSUBSTR()関数で部分文字列を抽出する

MySQLでテーブルの列(カラム)の値から部分文字列を抽出したい場合は、MySQLに組み込まれているSUBSTR()関数を使用します。基本的な構文は以下の通りです。

select substr(対象の列名, 開始位置) as 別名 from テーブル名;

第1引数に対象となる列名、第2引数に抽出を開始する文字位置を指定します。指定した位置から文字列の末尾までが抽出されます。

サンプルテーブルの作成

SUBSTR()関数の動作を理解するために、まずテーブルを作成しましょう。テーブル作成用のクエリは以下の通りです。

mysql> create table SubStringDemo
-> (
-> UserId varchar(200)
-> );
Query OK, 0 rows affected (0.55 sec)

レコードの挿入

次に、作成したテーブルにいくつかのレコードを挿入します。レコード挿入用のクエリは以下の通りです。

mysql> insert into SubStringDemo values('Bob10015');
Query OK, 1 row affected (0.29 sec)

mysql> insert into SubStringDemo values('Smith0015');
Query OK, 1 row affected (0.22 sec)

mysql> insert into SubStringDemo values('Carol20010');
Query OK, 1 row affected (0.14 sec)

全レコードの確認

SELECT文を使用すると、テーブル内のすべてのレコードを確認できます。クエリは以下の通りです。

mysql> select *from SubStringDemo;

実行結果は以下のようになります。

+------------+
| UserId |
+------------+
| Bob10015 |
| Smith0015 |
| Carol20010 |
+------------+
3 rows in set (0.00 sec)

SUBSTR()関数を使った部分文字列の抽出

それでは、MySQLテーブルの列から部分文字列を抽出してみましょう。以下の例では、UserId列の5文字目以降を抽出しています。

mysql> select substr(UserId,5) as ExtractSubstring from SubStringDemo;

部分文字列が抽出された実行結果は以下の通りです。

+------------------+
| ExtractSubstring |
+------------------+
| 0015 |
| h0015 |
| l20010 |
+------------------+
3 rows in set (0.00 sec)

「Bob10015」の場合、5文字目以降の「0015」、「Smith0015」の場合は「h0015」、「Carol20010」の場合は「l20010」がそれぞれ抽出されていることがわかります。

補足:SUBSTRING()関数との関係

なお、SUBSTR()関数はSUBSTRING()関数のエイリアス(別名)であり、どちらを使用しても同じ結果が得られます。また、開始位置に負の値を指定すると、文字列の末尾から数えた位置を基準に抽出することも可能です。用途に応じて使い分けると便利です。

  1. MySQLで列の値の先頭に000(ゼロ埋め)を追加する方法

    MySQLで列の値に000(ゼロ)を追加するには?MySQLで数値の先頭に「000」のようなゼロを追加して表示したい場合は、ZEROFILL属性を使用します。ZEROFILLを指定した列では、設定された表示幅に満たない桁数が自動的に0で埋められます。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1913 ( Code int(4) ZEROFILL AUTO_INCREMENT NOT NULL, PRIMARY KEY(Code) ); Query OK, 0 rows affected (0.00

  2. PythonでMySQLのテーブルに新しい列(カラム)を追加する方法

    既存のテーブルに後から新しい列を追加したい場面は少なくありません。例えば、「Students(学生)」というテーブルに「Name(名前)」「Age(年齢)」「Roll no(出席番号)」といった列があるとします。ここに、新しく「Address(住所)」という列を追加したい場合、どうすればよいのでしょうか。このようなときに活躍するのがALTERコマンドです。ALTERコマンドは、データベース内の列を変更・削除・更新するためのコマンドで、ADD句と組み合わせることで、テーブルに新しい列を追加することもできます。構文ALTER TABLE table_name ADD new_column_name