LoginSignup
1
1

More than 3 years have passed since last update.

MysQLでハイフンなしの郵便番号や電話番号にハイフンをつける方法

Posted at

MySQLにハイフンなしで登録されているデータを、ハイフンありで表示したりハイフンありのデータに更新をする方法についてです。

INSERT関数を使用する

insert文ではなく、insert関数を使用することで、文字列に文字列を追加することができます。
調べてもInsert関数ではなくInsert文ばかり出てきてしまうのでまとめました。。

位置 pos で始まる部分文字列と、文字列 newstr で置換された len 文字長とともに、文字列 str を返します。

参考
https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_insert

郵便番号にハイフンを追加する

1001100100-1100 とする方法です。
細かい挙動については公式のマニュアルを参考にしてください。

mysql> SELECT INSERT('1001100', 4, 0, '-');
+------------------------------+
| INSERT('1001100', 4, 0, '-') |
+------------------------------+
| 100-1100                     |
+------------------------------+
1 row in set (0.00 sec)

適当にusersテーブルにzipcodeカラムを持っているとして、先ほどのINSERT関数をupdate文と組み合わせます。

mysql> update users set zipcode = (SELECT INSERT(zipcode, 4, 0, '-')) where id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users where id = 1;
+----+----------+
| id | zipcode  |
+----+----------+
|  1 | 100-1100 |
+----+----------+
1 row in set (0.00 sec)

レコードによってハイフンがあったりなかったりという場合には、このようなwhere文を追加すれば、ハイフンなしのデータのみ更新ができます。

where zipcode not like '%-%';
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1