- ベストアンサー
半角全角変換ロジックについて
OSはSolaris8、DBはOracle9i、言語はC言語、コードはS-Jisです。 そこで、DBから取得する項目の中で、ある項目について、絶対に半角が入ってはいけないと言う制約があり、全角に変換する関数を作れと言われてしまいました。 期限は1日で試験まで済ませなければならず、ロジックをどうすれば良いか困ってます。そこで、簡単にコーディング出来る方法、内容と、ロジックを教えて下さい。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Oracle8iのマニュアル見てみたんですけど TO_MULTI_BYTEなんて関数がありますが、これじゃダメかな 手元にOracleの環境が無くて試せませんので ご参考程度にってことで
その他の回答 (3)
- muyoshid
- ベストアンサー率72% (230/318)
度々補足します。 replace ではなく、translate です。 濁音, 半濁音については、他のものをtranslate する前に replace で置換してはどうでしょうか?
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 #2 に一つ補足します。 濁音や半濁音を含む時は、もう少し工夫が必要ですね。
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 Oracle には、to_single_byte, to_multi_byte という関数が 用意されていますが、この関数で変換できるのは、英数だけです。 従って、カナを含む場合カナの部分は変換されません。 問題のデータにカナを含まない場合は、to_multi_byte でOk ですが カナを含む可能性がある場合は、PL/SQL で関数を作成する 必要があります。 作成する関数ですが、replace を使用するのが一番楽だと思います。 select replace(変換前文字列, 'アイウエオ', 'アイウエオ') from dual; とすると、変換前文字列内の全ての'ア','イ','ウ','エ','オ' を全角に する事ができます。 詳細は、「SQL リファレンス」を参照して下さい。
お礼
ありがとうございます。 さっそく、調べて見ましたが、半角かなが変換できませんでした。 別に半角かなを全角にする関数があるのでしょうか? それとも、何かオプションが使えるのでしょうか? 非常にいいところまで出来たのに、惜しいです。