2016-05-11 5 views
0

私のデータベースには、ポーランド語のアルファベットを使って書かれたデータしかありませんが、ポーランド語のアルファベット(異なるエンコーディングのソースからコピーされた単語)別のエンコーディングのポーランド語の文字。何とかポーランドのアルファベット以外の記号を対応する文字に変換できますか? 私が考えた唯一の解決策は、これらの文字を手動で検索して置き換えることですが、おそらくあなたは私の問題をより良く解決することができます。異なるエンコーディングでテキストをコピーすることによってアルファベット外の記号を変換する

質問はOracle SQL言語に関係します。

私は私の前にデータベースを持っていないが、私の記憶が正しけれとしての例では、このようになります - 私のデシベルから二列:

Swiat周辺

ÚWIAT

と私は必要ポーランドのアルファベットに属していないÚをŚに変換することです。

答えて

0

これを試すことができます。最初にそれが動作するかどうか試してみてください。

文字のzを文字列に変更する場合は、翻訳機能を使用します。translate(text_string, 'z', 'j')。私は文字zとjを使う必要はありません。代わりに、私はtranslate(text_string, chr(122), chr(106)を書くことができます - 文字コードを見つけるために、私はselect ascii('z') from dual;を使用します。例:

SQL> select translate('banzo', chr(122), chr(106)) from dual; 

TRANS 
----- 
banjo 

これは、text_stringのzからjまでのすべての出現を変更します。

変更する文字のコード( "from"と "to"の両方の文字)をキャラクタセットで見つける必要があります。データベースキャラクタではなく、セッションキャラクタセットにする必要がありますセット。少なくとも、私はこれが正しいと思います。それを試してみてください。また、CHRのドキュメントを読んでいるのかもしれません。もしTRANSLATEがセッション文字セットを使用していると思わない限り、CHRはDATABASE文字セットの文字コードを返します。

関数asciiは、非ASCII文字では機能しない場合もありますが、文字セットの名前をGoogleに渡すと、その文字セットで使用できるすべての文字のコードを示す文字セットテーブルが見つかります。これが動作するかどうか

次に、あなたが一発で変換を行うことができます - translate(text_string, 'abcd', 'qrst')を変更するすべての「」などの「R」へとchr(...)と「Q」は、すべての「B」、代わりの'abcd'chr(97) || chr(98) || chr(99) || chr(100)と書くことができます。

関連する問題