• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:姓名の前後を入れ替えるSQL命令文ありますか?)

日本人の名前を英語表記に変換するSQL命令文はありますか?

このQ&Aのポイント
  • 現在、DB内のindividualというテーブルのname_enというフィールドには、日本人の名前が英語表記で登録されています。
  • 一般的な英語表記ではなく、「姓, 名」の形式で登録されているため、これを一般的な「名 姓」の形式に一括で変換するSQL命令文が必要です。
  • MySQLのバージョンは5.1.67で、WebサーバーはApache/2.2.23を使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

列Aの値をインクリメントするようなUPDATE文を書いたことはありませんか? update tbl set a = a + 1; などと同じように、シンプルに考えれば良いですよ。 update tbl set name_en = concat(substr(name_en,comma+1) ,' ',substr(name_en,1,comma-1)) ;

CPACBCEO
質問者

お礼

ありがとうございます!実行できました。 実際は下記のような命令文になりました。 update tbl set name_en = concat(substr(name_en,locate(',',name_en) +1) ,' ',substr(name_en,1,locate(',',name_en) -1)) ;

その他の回答 (1)

回答No.1

select concat(substr(name_en,comma+1) ,' ',substr(name_en,1,comma-1)) from (select name_en,locate(',',name_en) as comma from tbl)t です。

CPACBCEO
質問者

補足

ありがとうございます! 値は正しく取得できました。 ちなみにそのままname_enのテーブルをアップデートしてしまいたいのですが、 その場合はどう書けばよいでしょうか。 下記ではできませんでした。 update tbl set name_en = (select concat(substr(name_en,comma+1) ,' ',substr(name_en,1,comma-1)) from (select name_en,locate(',',name_en) as comma from tbl)t) お手数おかけしますが、どうぞよろしくお願いします。