こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

半角全角変換ロジックについて

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

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

宜しくお願い致します。

投稿日時 - 2002-10-31 22:18:47

QNo.394252

すぐに回答ほしいです

質問者が選んだベストアンサー

Oracle8iのマニュアル見てみたんですけど
TO_MULTI_BYTEなんて関数がありますが、これじゃダメかな
手元にOracleの環境が無くて試せませんので
ご参考程度にってことで

投稿日時 - 2002-11-01 00:50:38

お礼

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

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

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

投稿日時 - 2002-11-01 13:31:57

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

度々補足します。

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

投稿日時 - 2002-11-01 15:58:31

ANo.3

こんにちわ。

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

投稿日時 - 2002-11-01 14:07:16

ANo.2

こんにちわ。

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

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

投稿日時 - 2002-11-01 13:36:14

あなたにオススメの質問