MySQLの名前カラムを2つのカラムに分割する方法


  1. SUBSTRING_INDEX関数を使用する方法:

    UPDATE テーブル名
    SET 姓カラム = SUBSTRING_INDEX(名前カラム, ' ', 1),
       名カラム = SUBSTRING_INDEX(名前カラム, ' ', -1)
  2. REGEXP_SUBSTR関数を使用する方法:

    UPDATE テーブル名
    SET 姓カラム = REGEXP_SUBSTR(名前カラム, '^[^ ]+'),
       名カラム = REGEXP_SUBSTR(名前カラム, '[^ ]+$')
  3. CONCAT, SUBSTRING_INDEX, LOCATE関数を組み合わせる方法:

    UPDATE テーブル名
    SET 姓カラム = SUBSTRING_INDEX(名前カラム, ' ', 1),
       名カラム = SUBSTRING_INDEX(SUBSTRING_INDEX(名前カラム, ' ', -1), ' ', -1)
  4. スクリプト言語(Pythonなど)を使用してデータを抽出し、分割する方法:

    import mysql.connector
    # MySQLへの接続
    db = mysql.connector.connect(
       host="ホスト名",
       user="ユーザー名",
       password="パスワード",
       database="データベース名"
    )
    cursor = db.cursor()
    # SELECT文を実行してデータを取得
    cursor.execute("SELECT id, 名前カラム FROM テーブル名")
    rows = cursor.fetchall()
    # データを分割してUPDATE文を生成し、実行
    for row in rows:
       full_name = row[1]
       names = full_name.split(' ')
       姓 = names[0]
       名 = ' '.join(names[1:])
       cursor.execute("UPDATE テーブル名 SET 姓カラム = %s, 名カラム = %s WHERE id = %s", (姓, 名, row[0]))
    # 変更をコミット
    db.commit()
    # 接続をクローズ
    cursor.close()
    db.close()

これらの方法を使用することで、MySQLの名前カラムを姓と名に分割することができます。適切な方法を選択し、データベースに合わせてコードを調整してください。