Help us understand the problem. What is going on with this article?

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

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 '%-%';
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away