重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

OSはSolaris8、DBはOracle9i、言語はC言語、コードはS-Jisです。
そこで、DBから取得する項目の中で、ある項目について、絶対に半角が入ってはいけないと言う制約があり、全角に変換する関数を作れと言われてしまいました。

期限は1日で試験まで済ませなければならず、ロジックをどうすれば良いか困ってます。そこで、簡単にコーディング出来る方法、内容と、ロジックを教えて下さい。

宜しくお願い致します。

A 回答 (4件)

Oracle8iのマニュアル見てみたんですけど


TO_MULTI_BYTEなんて関数がありますが、これじゃダメかな
手元にOracleの環境が無くて試せませんので
ご参考程度にってことで
    • good
    • 0
この回答へのお礼

ありがとうございます。
さっそく、調べて見ましたが、半角かなが変換できませんでした。

別に半角かなを全角にする関数があるのでしょうか?
それとも、何かオプションが使えるのでしょうか?

非常にいいところまで出来たのに、惜しいです。

お礼日時:2002/11/01 13:31

度々補足します。



replace ではなく、translate です。
濁音, 半濁音については、他のものをtranslate する前に
replace で置換してはどうでしょうか?
    • good
    • 0

こんにちわ。



#2 に一つ補足します。
濁音や半濁音を含む時は、もう少し工夫が必要ですね。
    • good
    • 0

こんにちわ。



Oracle には、to_single_byte, to_multi_byte という関数が
用意されていますが、この関数で変換できるのは、英数だけです。
従って、カナを含む場合カナの部分は変換されません。
問題のデータにカナを含まない場合は、to_multi_byte でOk ですが
カナを含む可能性がある場合は、PL/SQL で関数を作成する
必要があります。

作成する関数ですが、replace を使用するのが一番楽だと思います。
select replace(変換前文字列, 'アイウエオ', 'アイウエオ') from dual;
とすると、変換前文字列内の全ての'ア','イ','ウ','エ','オ' を全角に
する事ができます。
詳細は、「SQL リファレンス」を参照して下さい。
    • good
    • 0

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