• 締切済み

SQLのデータで半角カナを全角にしたい

レコード数かけるフィールド数が何万とあるデータベースのデータの中で 半角カナの部分だけを全角カナに変えたいのですが、何かよい手はありますでしょうか? 半角数字と半角記号(ハイフンやスラッシュなど)はそのままにしておきたいのですが。 xamppの1.7.3を使用しており、MySQL5.14、PHP5.31です。 ご存知の方いらっしゃればアドバイスお願いします。

みんなの回答

回答No.5

文字数制限もあり、連続投稿になります。 半角カタカナを全角カタカナに変換するストアド・ファンクションを、試しに作ってみました。 文字数制限でここには貼り付けできないので、リンクを参照願います。

参考URL:
http://blogs.yahoo.co.jp/chuuken_ken_kou/folder/386719.html
回答No.4

他の方の回答にもありますが、RDBMSの機能だけでやるなら、 (1)replace関数を何度もネストさせて、文字毎に変換 (2)ストアドプロシジャで、文字コードの変換テーブル(リスト)などを作って、文字数分ループさせて変換 といった方法があります。 RDBMSでは障害に備えたログを取得したり、バッファリング、排他制御などがあり、今回のような操作は、オーバヘッドがあります。そのため、アプリ側でやった方が処理がシンプルにでき、軽快にできると思います。また、DB上で更新するより、テキストファイル上でやった方が、やはりシンプルで軽快にできると思います。 いずれにしても、「どの文字をどの文字に変換する」、「どの文字コードをどの文字コードに変換する」といった対応付けしたテーブル、リストを作るなり、流用できるものを入手する必要があります。 ASCIIなどであれば、文字コードに特定の数値を加算するといったことも可能ですが、マルチバイトの文字コードは、そう簡単ではないようです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

他の方の回答にもありますが、文字コードによって若干処理がかわるかも ストアドプロシージャで半角カタカナ範囲をwhileで回して全角にすれば いけそうな気がします。

tenmatakumi
質問者

補足

ストアドプロシージャ・・・聞きなれない言葉です・・・ いったん調べてみますね

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

シフトJIS前提ですが http://www.vector.co.jp/soft/win95/util/se373689.html?ds こちらは、カナのみ変換対象のソフトのようです。 ただ、テーブルをエクスポートして変換、インポート作業の手間がかかりますね。 それに、変換作業をメモリ上で行うので、環境によっては負荷が高いかもしれません。

tenmatakumi
質問者

補足

状況の説明不足で申し訳ありませんでした・・・ 文字コードはUTF8なので今回はこのソフトの出番はなさそうです。 でもJISのデータベースもよく見かけるので何かと役立ちそうです 情報ありがとうございました。

回答No.1

使用している文字コードは、何でしょうか? その列には、半角データしか入れてないですか?

tenmatakumi
質問者

補足

文字コードはUTF8ですが、どの列に何が入っているかは、 前任者がいなくなったため判りません・・・ 例として株式会社グーというような全角と半角が混じったデータもあるようです。

関連するQ&A