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

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(姓)」に分割されます。

  1. MySQLのSUBSTRING_INDEX()関数で文字列を分割する方法を徹底解説

    MySQLで文字列を特定の区切り文字で分割したい場合、SUBSTRING_INDEX() 関数が非常に便利です。この記事では、サンプルテーブルの作成から、氏名を「名」と「姓」に分割するクエリの実行まで、具体的な手順をわかりやすく解説します。 SUBSTRING_INDEX()関数とは SUBSTRING_INDEX(str, delim, count) は、区切り文字 delim の count 回目の出現位置を基準に部分文字列を返す関数です。count が正の値の場合は左側から、負の値の場合は右側から数えます。この特性を組み合わせることで、柔軟に文字列を分割できます。 サンプルテーブルの作成

  2. MySQLで文字列の一部(@以降のドメイン名)を置き換える方法

    MySQLでは、REPLACE()関数を使うことで、文字列の一部を簡単に別の文字列へ置き換えることができます。たとえば、メールアドレスのドメイン部分(@以降)を一括で変更したい場合に非常に便利です。ここでは、実際にテーブルを作成し、メールアドレスのドメインを置き換える手順を解説します。 1. テーブルの作成 まず、サンプル用のテーブルを作成します。 mysql> create table DemoTable -> ( -> EmailId varchar(30) -> ); Query OK, 0 rows affected (0.53 sec