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

【MySQL】郵便番号フィールドから「-XXX」を削除する方法|SUBSTRING_INDEXとREGEXP_REPLACEの使い方

郵便番号から「-XXX」を削除するには?

MySQLで郵便番号フィールドから「-XXX」(ハイフン以降の文字列)を取り除きたい場合、最も簡単なのはSUBSTRING_INDEX()関数を使う方法です。まずは基本の手順を、実際のSQLサンプルとともに見ていきましょう。

1. サンプルテーブルの作成

まず、郵便番号を格納するテーブルを作成します。

mysql> create table DemoTable
(
    ZipCode varchar(50)
);
Query OK, 0 rows affected (2.02 sec)

2. テストデータの挿入

INSERT文を使って、いくつかのレコードを登録します。

mysql> insert into DemoTable values('52533-909');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('12345-674');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('89893-890');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('AAAAA-783');
Query OK, 1 row affected (0.25 sec)

3. 現在のデータを確認

SELECT文で全レコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は次のとおりです。

+-----------+
| ZipCode   |
+-----------+
| 52533-909 |
| 12345-674 |
| 89893-890 |
| AAAAA-783 |
+-----------+
4 rows in set (0.00 sec)

4. SUBSTRING_INDEX()で「-XXX」を削除する

以下のUPDATE文を実行すると、substring_index()によってハイフンより前の部分だけを抽出し、「-XXX」を削除できます。

mysql> update DemoTable set ZipCode=substring_index(ZipCode, '-', 1);
Query OK, 4 rows affected (0.44 sec)
Rows matched : 4  Changed : 4  Warnings : 0

5. 更新結果の確認

再度テーブルの内容をチェックしてみます。

mysql> select *from DemoTable;

実行結果:

+---------+
| ZipCode |
+---------+
| 52533   |
| 12345   |
| 89893   |
| AAAAA   |
+---------+
4 rows in set (0.00 sec)

SUBSTRING_INDEX()の第3引数に「1」を指定すると、区切り文字(ここでは「-」)より前の部分のみが取得されます。「AAAAA」のような英字もそのまま保持されるため、柔軟な対応が可能です。

補足:REGEXP_REPLACE()を使う方法(MySQL 8.0以降)

正規表現で処理したい場合は、MySQL 8.0以降で利用できるREGEXP_REPLACE()関数が便利です。

mysql> update DemoTable set ZipCode=regexp_replace(ZipCode, '-.*$', '');

このクエリは「-」以降のすべての文字列を空文字に置き換えます。単純な区切り文字の処理ならSUBSTRING_INDEX()、複雑なパターンマッチングが必要な場合はREGEXP_REPLACE()といったように、用途に応じて使い分けるのがおすすめです。

  1. MySQLでテキストフィールドから数字のみを抽出する方法を解説

    MySQLでは、テキスト型(TEXT)のカラムに保存されたデータに、数字以外の記号や文字が混在していることがあります。例えば、ハイフン(-)、カンマ(,)、スペース、引用符などが含まれる場合、それらを取り除いて数字だけを抽出したいケースは少なくありません。本記事では、REPLACE関数を組み合わせることで、テキストフィールドから数字のみを抽出する方法を、実際のSQL文と実行結果とともにわかりやすく解説します。1. サンプルテーブルを作成するまず、テキスト型のカラムを持つテーブルを作成します。mysql> create table DemoTable ( Number text )

  2. MySQLで他のカラムの値から新しいカラムの値を導出する方法

    MySQLではユーザー定義変数(ユーザー変数)を活用することで、既存のカラムの値をもとに別のカラムの値を計算・導出できます。本記事では、累積和(累積合計)を求める具体例を通して、その方法をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1868 ( Value int ); Query OK, 0 rows affected (0.00 sec)レコードの挿入insertコマンドを使って、テーブルにデータを挿入します。mysql> insert into DemoTable1