MySQLのSUBSTRING_INDEX関数で名前文字列を「名」と「姓」の2つに分割する方法
理解をしやすくするために、customerdetailというテーブルの以下のデータを使用します。
mysql> Select * from Customerdetail; +----------------------+----------------------+-----------+---------------------+ | Name | FName | Address | Emailid | +----------------------+----------------------+-----------+---------------------+ | Advik Jhamb | Lovkesh Jhamb | Mumbai | Advik@gmail.com | | Chirag Jai Patil | Raman Jai Patil | Gujrat | chirahp@yahoo.com | | Devansh Singh Rajput | Kishore Singh Rajput | Rajasthan | Devansh@Hotmail.com | | Mitul Kumar Sharma | Om Veer Sharma | Patiala | Mitul@gmail.com | +----------------------+----------------------+-----------+---------------------+ 4 rows in set (0.00 sec)
名前を「名」と「姓」に分割するクエリ
ここで、名前を「First_name(名)」と「Last_name(姓)」の2つの部分に分割したい場合は、以下のクエリを使用することで実現できます。
mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 1), ' ', -1) AS First_Name, TRIM( SUBSTR(Name, LOCATE(' ', Name)) ) AS Last_Name FROM Customerdetail;
+------------+--------------+
| First_Name | Last_Name |
+------------+--------------+
| Advik | Jhamb |
| Chirag | Jai Patil |
| Devansh | Singh Rajput |
| Mitul | Kumar Sharma |
+------------+--------------+
4 rows in set (0.00 sec)クエリの仕組み
上記のクエリでは、複数の文字列関数を組み合わせて名前を分割しています。それぞれの役割は以下のとおりです。
- SUBSTRING_INDEX(Name, ' ', 1):最初のスペースより前の部分(最初の単語)を取得します。
- SUBSTR(Name, LOCATE(' ', Name)):LOCATE関数で見つけた最初のスペースの位置以降の文字列を抽出します。
- TRIM():抽出した文字列の前後にある余分な空白を取り除きます。
結果セットを見ると、名前が2つの部分に正しく分割されていることがわかります。なお、ミドルネームが含まれる場合は、それも姓の一部として扱われる点に注意してください。たとえば「Chirag Jai Patil」は「Chirag(名)」と「Jai Patil(姓)」に分割されます。
-
MySQLのSUBSTRING_INDEX()関数で文字列を分割する方法を徹底解説
MySQLで文字列を特定の区切り文字で分割したい場合、SUBSTRING_INDEX() 関数が非常に便利です。この記事では、サンプルテーブルの作成から、氏名を「名」と「姓」に分割するクエリの実行まで、具体的な手順をわかりやすく解説します。 SUBSTRING_INDEX()関数とは SUBSTRING_INDEX(str, delim, count) は、区切り文字 delim の count 回目の出現位置を基準に部分文字列を返す関数です。count が正の値の場合は左側から、負の値の場合は右側から数えます。この特性を組み合わせることで、柔軟に文字列を分割できます。 サンプルテーブルの作成
-
MySQLで文字列の一部(@以降のドメイン名)を置き換える方法
MySQLでは、REPLACE()関数を使うことで、文字列の一部を簡単に別の文字列へ置き換えることができます。たとえば、メールアドレスのドメイン部分(@以降)を一括で変更したい場合に非常に便利です。ここでは、実際にテーブルを作成し、メールアドレスのドメインを置き換える手順を解説します。 1. テーブルの作成 まず、サンプル用のテーブルを作成します。 mysql> create table DemoTable -> ( -> EmailId varchar(30) -> ); Query OK, 0 rows affected (0.53 sec