- 締切済み
SQLのデータで半角カナを全角にしたい
レコード数かけるフィールド数が何万とあるデータベースのデータの中で 半角カナの部分だけを全角カナに変えたいのですが、何かよい手はありますでしょうか? 半角数字と半角記号(ハイフンやスラッシュなど)はそのままにしておきたいのですが。 xamppの1.7.3を使用しており、MySQL5.14、PHP5.31です。 ご存知の方いらっしゃればアドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
文字数制限もあり、連続投稿になります。 半角カタカナを全角カタカナに変換するストアド・ファンクションを、試しに作ってみました。 文字数制限でここには貼り付けできないので、リンクを参照願います。
- chukenkenkou
- ベストアンサー率43% (833/1926)
他の方の回答にもありますが、RDBMSの機能だけでやるなら、 (1)replace関数を何度もネストさせて、文字毎に変換 (2)ストアドプロシジャで、文字コードの変換テーブル(リスト)などを作って、文字数分ループさせて変換 といった方法があります。 RDBMSでは障害に備えたログを取得したり、バッファリング、排他制御などがあり、今回のような操作は、オーバヘッドがあります。そのため、アプリ側でやった方が処理がシンプルにでき、軽快にできると思います。また、DB上で更新するより、テキストファイル上でやった方が、やはりシンプルで軽快にできると思います。 いずれにしても、「どの文字をどの文字に変換する」、「どの文字コードをどの文字コードに変換する」といった対応付けしたテーブル、リストを作るなり、流用できるものを入手する必要があります。 ASCIIなどであれば、文字コードに特定の数値を加算するといったことも可能ですが、マルチバイトの文字コードは、そう簡単ではないようです。
- yambejp
- ベストアンサー率51% (3827/7415)
他の方の回答にもありますが、文字コードによって若干処理がかわるかも ストアドプロシージャで半角カタカナ範囲をwhileで回して全角にすれば いけそうな気がします。
- nora1962
- ベストアンサー率60% (431/717)
シフトJIS前提ですが http://www.vector.co.jp/soft/win95/util/se373689.html?ds こちらは、カナのみ変換対象のソフトのようです。 ただ、テーブルをエクスポートして変換、インポート作業の手間がかかりますね。 それに、変換作業をメモリ上で行うので、環境によっては負荷が高いかもしれません。
補足
状況の説明不足で申し訳ありませんでした・・・ 文字コードはUTF8なので今回はこのソフトの出番はなさそうです。 でもJISのデータベースもよく見かけるので何かと役立ちそうです 情報ありがとうございました。
- chukenkenkou
- ベストアンサー率43% (833/1926)
使用している文字コードは、何でしょうか? その列には、半角データしか入れてないですか?
補足
文字コードはUTF8ですが、どの列に何が入っているかは、 前任者がいなくなったため判りません・・・ 例として株式会社グーというような全角と半角が混じったデータもあるようです。
補足
ストアドプロシージャ・・・聞きなれない言葉です・・・ いったん調べてみますね