dポイントプレゼントキャンペーン実施中!

お世話になります。

現在、DB内のindividualというテーブルのname_enというフィールドにおいて、
日本人の名前が英語表記で登録されています。

ただし、一般的な表記でなく、「姓, 名」というようになっています。
例えば、玉木宏さんであれば、
Tamaki, Hiroshi
となっています。

これを一般的な
Hiroshi Tamaki
に一発で置換するようなSQL命令文がありましたら教えていただきたいのですが、
如何でしょうか。
何卒よろしくお願いいたします。

バージョン情報などは下記の通り引用します。

MySQL

Server: Localhost via UNIX socket
Server version: 5.1.67
Protocol version: 10
MySQL charset: UTF-8 Unicode (utf8)
Web server

Apache/2.2.23
MySQL client version: 5.1.67
PHP extension: mysqli
phpMyAdmin

Version information: 3.3.10.5

A 回答 (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))
;
    • good
    • 1
この回答へのお礼

ありがとうございます!実行できました。
実際は下記のような命令文になりました。

update tbl set name_en =
concat(substr(name_en,locate(',',name_en) +1)
,' ',substr(name_en,1,locate(',',name_en) -1))
;

お礼日時:2013/07/25 01:05

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)

お手数おかけしますが、どうぞよろしくお願いします。

補足日時:2013/07/21 22:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!