oracleに登録されているデータの全角カタカナを半角カタカナに変換してみる
2005年11月2日 お仕事意外な事って言うのは、結構あるものだが
登録されてる全角と半角のカタカナを半角カタカナに統一するって言うのは通常のコマンドラインからではできないらしい。
to_multi_byte やら to_single_byte って言う変数があるから、PL*SQLで、fetch cursorでぶん回してくれれば変換できるのかと思うのが人情だが、変換できたのは間に挟まっていたスペースだけだったT_T
実施する環境が「ゲイツくん」だったから、NKFのEXEでも咬まして、PL*SQLから呼び出せばいけるだろうと更に面倒な手続きに発展させるのが一般的な思考だと思うのだが・・・、何故かNKFで半角カタカナに変換できない。
よくよく、考えてみれば、NKFは文字コードを変換するもので文字を変換するものでは無かったりする。
思い起こせば、電子メールが世に広まりだした頃、異機種間の文字コードの問題や、半角カタカナが起因する問題が起こり、文字コード変換や半角を全角に変換するニーズはあったが、全角を半角にするニーズは薄かった様にも思えてくる。
そこまで来て、標準入力の全角カタカナを標準出力の半角カタカナに変換するツールを探すのを諦めた。
結局、マスター全行の「ID」と「名称」をSQLでupdate文の形(*1)でファイルに吐き出させて、ファイル中の全角カタカナを半角カタカナに変換して、SQL*Plusで実行するっていうある意味、王道とも言える方法で対応を決定。
後は、ファイル中の全角カタカナを半角カタカナに変換するFWを見繕って・・・。
やっぱ、UNIXとかLINUXの環境の方がつぶしが効くね。
だめじゃん、ゲイツ。
*1)select ’update master set name=’||’’’name’’’||’ where id=’||’’’id’’’||’;’||chr(10)||’commit;’ from master;
登録されてる全角と半角のカタカナを半角カタカナに統一するって言うのは通常のコマンドラインからではできないらしい。
to_multi_byte やら to_single_byte って言う変数があるから、PL*SQLで、fetch cursorでぶん回してくれれば変換できるのかと思うのが人情だが、変換できたのは間に挟まっていたスペースだけだったT_T
実施する環境が「ゲイツくん」だったから、NKFのEXEでも咬まして、PL*SQLから呼び出せばいけるだろうと更に面倒な手続きに発展させるのが一般的な思考だと思うのだが・・・、何故かNKFで半角カタカナに変換できない。
よくよく、考えてみれば、NKFは文字コードを変換するもので文字を変換するものでは無かったりする。
思い起こせば、電子メールが世に広まりだした頃、異機種間の文字コードの問題や、半角カタカナが起因する問題が起こり、文字コード変換や半角を全角に変換するニーズはあったが、全角を半角にするニーズは薄かった様にも思えてくる。
そこまで来て、標準入力の全角カタカナを標準出力の半角カタカナに変換するツールを探すのを諦めた。
結局、マスター全行の「ID」と「名称」をSQLでupdate文の形(*1)でファイルに吐き出させて、ファイル中の全角カタカナを半角カタカナに変換して、SQL*Plusで実行するっていうある意味、王道とも言える方法で対応を決定。
後は、ファイル中の全角カタカナを半角カタカナに変換するFWを見繕って・・・。
やっぱ、UNIXとかLINUXの環境の方がつぶしが効くね。
だめじゃん、ゲイツ。
*1)select ’update master set name=’||’’’name’’’||’ where id=’||’’’id’’’||’;’||chr(10)||’commit;’ from master;
コメント