• ベストアンサー
  • すぐに回答を!

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

OSはSolaris8、DBはOracle9i、言語はC言語、コードはS-Jisです。 そこで、DBから取得する項目の中で、ある項目について、絶対に半角が入ってはいけないと言う制約があり、全角に変換する関数を作れと言われてしまいました。 期限は1日で試験まで済ませなければならず、ロジックをどうすれば良いか困ってます。そこで、簡単にコーディング出来る方法、内容と、ロジックを教えて下さい。 宜しくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数878
  • ありがとう数7

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

  • ベストアンサー
  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 さっそく、調べて見ましたが、半角かなが変換できませんでした。 別に半角かなを全角にする関数があるのでしょうか? それとも、何かオプションが使えるのでしょうか? 非常にいいところまで出来たのに、惜しいです。

関連するQ&A

  • 全角英数字とハイフンを半角に変換したいです。

    住所などに含まれる全角英数字とハイフンを半角へ変換したく、Javaのソースが置いてあるサイトなどを 探したのですが、見つかりませんでした。 このような痒いところに手がとどく ユーティリティー系のクラスは どこかにありますでしょうか? 他の言語では標準関数や標準的な物があるのですが、 Javaでないのは、簡単に作れる為なのでしょうか?

  • 全角カタカナを半角カタカナにする方法・・・

    皆様、ご指導宜しくお願い致します。 WEBの世界で有り得るのかどうか、まずはそこから疑問になりますが、どうすればいいのか思いつかないので お力をお貸し下さい。 DB:oracle8.1.X 言語:asp あるデータベースのデータが半角カタカナで登録されてしまっています。 フォームから検索条件を入れて、該当するデータを抽出したのですが、フォームのデータとデータベースのデータをどう比較すればいいのでしょうか? 半角カタカナを全角にする方法は、basp21を使えばできるのですが、SQLに全角のカタカナを値として渡しても意味が無いので。。。 SQL文を実行する時点で、値の形をイコールにしたいのです。 どなたか良い方法がありましたら、教えてください。

  • Excel 全角数字を半角数字に

    エクセルを使ってデータを管理しています。 郵便番号の項目には、500件ぐらい郵便番号が入力されていますが、全角数字で入力されたデータと、半角数字で入力されたデータが混じっていて、見辛いし管理もしづらいです。  関数を使って、全角数字を半角数字に変換する方法はありますでしょうか?

その他の回答 (3)

  • 回答No.4

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

共感・感謝の気持ちを伝えよう!

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

  • 回答No.2

こんにちわ。 Oracle には、to_single_byte, to_multi_byte という関数が 用意されていますが、この関数で変換できるのは、英数だけです。 従って、カナを含む場合カナの部分は変換されません。 問題のデータにカナを含まない場合は、to_multi_byte でOk ですが カナを含む可能性がある場合は、PL/SQL で関数を作成する 必要があります。 作成する関数ですが、replace を使用するのが一番楽だと思います。 select replace(変換前文字列, 'アイウエオ', 'アイウエオ') from dual; とすると、変換前文字列内の全ての'ア','イ','ウ','エ','オ' を全角に する事ができます。 詳細は、「SQL リファレンス」を参照して下さい。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 半角/全角文字混在データの分割方法

    VB6.0にて、あるデータ項目の内容を、画面上の2つの表示領域に分割して セットする方法を教えて下さい。 あるファイルの項目として、「住所」という項目があるとします。 このデータを取得し、画面に表示する際に、「住所1」「住所2」とに分割して、 セットします。 この場合、ファイル上の「住所」は、キャラクタタイプで40バイトと定義されており、 ”半角/全角文字混在”でデータが格納されています。 画面上の、「住所1」「住所2」はそれぞれ、20バイトとします。 この様な条件で、単純に取得したデータを2分割すると、 取得したデータが、全て半角か全角なら問題はないのですが、 例えば、1文字目が半角で、以降が全て全角文字だった場合に、 最後の全角文字がぴったり収まらなくなり、うまく表示できないように思います。 また、文字を取得する際に、使用している、Mid(MidB)関数やLen(LenB)関数も、 うまく利用できていないようです。(コード体系の違いでしょうか?) どなたかご教授下さい。 よろしくお願いします。

  • 全角半角考慮した文字列分割

    A列           B列         C列 あいうえおかきくけこ  あいうえ      おかきくけこ アイウエオカキクケコ   アイウエオカキクケ  コ あいうえオかきくけこ   あいうえオ    かきくけこ A列に全角半角混在のテキスト項目があります。 B列、C列に以下のルールで分割したいのですが、Excel関数で 実現可能でしょうか?可能な場合は式をご教授して 頂けますでしょうか。宜しくお願い致します。 ※全角をバイト数指定で分割して文字化けしないように 全角半角を考慮して分割したいと考えております。 B列  A列9桁目が半角の場合は半角9文字 A列9桁目全角の場合は半角8文字(全角4文字)をB列へ C列  A列10桁目が半角の場合は、左端10桁目~半角9文字 A列10桁目が全角の場合は、左端9桁目~半角9文字

  • キーボードを使わない入力、もしくは全角半角切り替え

    現在プログラム(c言語)で簡単なクイズゲームを作成しています。 回答の入力の際全角での入力を行うのですが、毎回「Alt+半角」で全角、 半角を切り替えるのが面倒に感じ、入力時に全角半角が切り替わるよう プログラムをしようと考えましたが、やり方がわからずネットで検索したところ、【「半角」でなく「Alt+半角」でないと入力切替は行えないよ】 といった内容だけで探している内容はヒットしませんでした。 1 プログラムで入力切替を行える方法を教えてください。   (言語はc言語、java、VBあたりでお願いします) 2 1が無理ならばキーボード入力ではなくプログラムなどから入力信号を     Windowsにぶつける方法を教えてください。   (Alt+半角の入力信号を出したことにするため)   OSはVistaホームプレミアムです。 3 ちょっと趣旨から外れてしまいますがOSに直接入力信号を叩き込む方法   はあるのでしょうか?キーボード入力変換ソフト、パスワード入力変換   ソフト、パソコンゲーム用のマクロソフトなどフリーソフト等で見かける   ことはありますが、原理がよくわかりません。そのあたりの内容を学べる   サイト、もしくは教科書等ありましたら教えてください。 初めての投稿なので失礼な内容を書いていましたら申し訳ありません。 ここのサイトに乗ってるよ、この本で学べるよといった回答でもかまわないので、よろしくお願いいたします。 以上

  • CString型 全角半角を意識せずに「1文字」ずつ取り出す

    CString型の文字列に格納されている文字を1文字ずつ取り出したいです。 ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。 半角だけなら、str[0] str[1]...という風に取り出せますが、 全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。 その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを、下記のような感じの関数として作りたいです。 CString ripString(CString str,int index){ //ソースとなる文字列、n文字目 /*~処理~*/ return 文字列; } たとえば"あaいbうcえdおe"という文字列を入れると、 CString str="あaいbうcえdおe"; ripString(str,0) →結果 "あ" ripString(str,1) →結果 "a" ripString(str,2) →結果 "い" ripString(str,3) →結果 "b"  ・  ・  ・   こういうことをするのに良い方法はありますか? 1バイトごとのそれぞれの文字自身が、 ・半角文字なのか ・全角文字の前1バイトなのか ・全角文字の後1バイトなのか これをプログラム的に判別する方法があればいいのですが・・・悩んでいます。

  • 半角→全角変換

    数値、記号、カナのすべてを半角から全角に変換したく Encode::JP::H2Zを利用しサンプルプログラムを書いてみました。 セーブは、s-jisで行っているのですが以下のコードを試しましたがまったく変換されません。何処がいけないのでしょうか? 以下を実行すると、 h2z: 012ABCabc!@#ア??ガダパ h2z: となってしまいます。 #!/usr/bin/perl use Encode; use Encode::JP::H2Z; my $str_h = ' 012ABCabc!@#アイウガダパ'; my $str_2 = '  012AbCabc!@#アイウガダパ'; my $char_conv; $char_conv = Encode::encode("euc-jp", $str_h); Encode::JP::H2Z::h2z(\$char_conv); $char_conv = Encode::decode("euc-jp", $char_conv); print " h2z:" . $char_conv . "\n"; $char_conv = Encode::encode("euc-jp", $str_h2); Encode::JP::H2Z::h2z(\$char_conv); $char_conv = Encode::decode("euc-jp", $char_conv); print " h2z:" . $char_conv . "\n";

    • ベストアンサー
    • Perl
  • 全角半角を意識した文字分割

    A列           B列   C列  D列  E列     あいうえおかきくけこ  あ   いう  えお  か アイウエオカキクケコ    アイウ   エオ  カキ ク あイウえオかきくけこ    あ   イウえ  オか き 先ほど同じような質問を一度しているのですが、 A列に全角半角混在のテキスト項目があります。 B列、C列、D列、E列に以下のルールで分割したいのですが、 Excel関数で 実現可能でしょうか? 可能な場合は式をご教授して頂けますでしょうか。宜しくお願い致します。 ※全角をバイト数指定で分割して文字化けしないように全角半角を考慮して分割した いと考えております。 B列(半角3文字)  A列3桁目が半角の場合は半角3文字 A列3桁目全角の場合は半角2文字(全角1文字) C列 (半角4文字) A列4桁目が半角の場合は、左端4桁目~半4文字分 A列4桁目が全角の場合は、左端3桁目~半角4文字 D列(半角4文字) A列7桁目が半角の場合は、左端7桁目~半4文字分 A列7桁目が全角の場合は、左端6桁目~半角4文字 E列(半角2文字) A列11桁目が半角の場合は、左端11桁目~半2文字分 A列11桁目が全角の場合は、左端10桁目~半角2文字

  • 半角全角混在(JIS)をJEF+EBCDICへのコード変換

    仕事で行うのに必要です。 パソコン(JIS8)から汎用機k-6700a(JEF+EBCDIC)へデータを送ります。 その際、日本語項目で半角全角混在のデータがあり変換させるのに 苦労しています。 汎用機k-6700a側で変換を掛けたいのですが、何か良い手はないでしょうか? 自分で調べた限りでは、サービスツールの標準コード変換サブルーチンで JIS8⇒JEF+EBICDICはできるみたいなのですが、半角全角の区別をどう付けて 良いものかどうか・・・ わかりやすい解答をお待ちしています。

  • 半角カナは全角カナに、全角英数字は半角英数字に、一気に置換したい

    「半角カナは全角カナに、全角英数字は半角英数字に、一気に置換したい」と考えた時、同じ様な質問とそれに対する回答は沢山有るのですが、意外に満足出来るやり方が見つからず、大変困っています。 大きな制約条件(これが難題...)として、会社が管理するWindows機なので、使って良いのはWordとExcelだけだという問題が有ります(便利なユーティリティーソフトを見つけても、インストール出来ない)。WordとExcelのマクロは、辛うじて、使用可です。 WWWでWordでのマクロの作例を探し当て、これは良いかなと思ったら、小文字の全角英数字が全部大文字の半角英数字になってしまい、これは駄目でした。 また、Wordの「文字種の変換」を試用してみると、「半角」を指定してテキスト全体を選択して変換した場合、全角英数字が半角英数字になるのは良いのですが、全角カナが半角カナになってしまい、これも非常に不都合でした。 尚、主なターゲットは、ワークシートとかではなくて長文のテキストなので、色々な回答例で「Excelの関数を使えば良い」と書かれている説明を読むと、ちょっと不便だなと感じました。 Wordでのマクロで、完璧なものが有れば、OKなのだと思うのですが、自分には未だそれを作る能力が有りません(これを機に、勉強したいと思っています)。良い解決策や、マクロが有れば、是非お教え下さい。

  • マクロで半角・全角スペースと改行を削除したい

    マクロ初心者です。 BookA-sheetAの「F1:F40」に入っている文字列左右(前後)の半角・全角スペースと、 改行コードを削除したいのですが、書いてみたマクロはエラーが出てしまいます。 trim関数と、改行コード削除はどう組み合わせればよいのでしょうか? 初心者で申し訳ないのですが、ご教示いただければ幸いです。

  • シングルクォーテーションの変換

    VB6からOracle9iのテーブルにシングルクォーテーション(半角)を含む文字列を登録する場合に、よく行われる変換方法は何がありますでしょうか? (1)シングルクォーテーションを取り除く (2)全角文字に置き換える (3)SQL文を変換しDBに登録できるようにする (3)の場合、使用される関数が載っているホームページがありましたらご教授のほどよろしくお願い致します。