【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()といったように、用途に応じて使い分けるのがおすすめです。
-
MySQLでテキストフィールドから数字のみを抽出する方法を解説
MySQLでは、テキスト型(TEXT)のカラムに保存されたデータに、数字以外の記号や文字が混在していることがあります。例えば、ハイフン(-)、カンマ(,)、スペース、引用符などが含まれる場合、それらを取り除いて数字だけを抽出したいケースは少なくありません。本記事では、REPLACE関数を組み合わせることで、テキストフィールドから数字のみを抽出する方法を、実際のSQL文と実行結果とともにわかりやすく解説します。1. サンプルテーブルを作成するまず、テキスト型のカラムを持つテーブルを作成します。mysql> create table DemoTable ( Number text )
-
MySQLで他のカラムの値から新しいカラムの値を導出する方法
MySQLではユーザー定義変数(ユーザー変数)を活用することで、既存のカラムの値をもとに別のカラムの値を計算・導出できます。本記事では、累積和(累積合計)を求める具体例を通して、その方法をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1868 ( Value int ); Query OK, 0 rows affected (0.00 sec)レコードの挿入insertコマンドを使って、テーブルにデータを挿入します。mysql> insert into DemoTable1