- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:姓名の前後を入れ替えるSQL命令文ありますか?)
日本人の名前を英語表記に変換するSQL命令文はありますか?
このQ&Aのポイント
- 現在、DB内のindividualというテーブルのname_enというフィールドには、日本人の名前が英語表記で登録されています。
- 一般的な英語表記ではなく、「姓, 名」の形式で登録されているため、これを一般的な「名 姓」の形式に一括で変換するSQL命令文が必要です。
- MySQLのバージョンは5.1.67で、WebサーバーはApache/2.2.23を使用しています。
- みんなの回答 (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)) ;
その他の回答 (1)
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
回答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 です。
質問者
補足
ありがとうございます! 値は正しく取得できました。 ちなみにそのまま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) お手数おかけしますが、どうぞよろしくお願いします。
お礼
ありがとうございます!実行できました。 実際は下記のような命令文になりました。 update tbl set name_en = concat(substr(name_en,locate(',',name_en) +1) ,' ',substr(name_en,1,locate(',',name_en) -1)) ;