2

解決しようとしている問題があります。商用ERPシステムを実行しているSQLServer2005があります。これは、データベース構造を変更できず、すべての文字フィールドがUnicodeタイプ(NCHAR、NVARCHAR)ではなくCHARまたはVARCHARであることを意味します。

国に基づいて、ERPソフトウェアの複数のインスタンスもあります。各国は同じデータベースサーバー上に独自のデータベースを持っているため、実行中のERPソフトウェアのインスタンスに基づいてテーブル名が異なります。たとえば、米国の顧客テーブルはUS_CUSTOMERと呼ばれ、英国の顧客テーブルはGB_CUSTOMERと呼ばれます。シノニムを使用してERPシステムテーブルを基本的にミラーリングする別のデータベースを作成し、次にこれらのシノニムに対してすべてのSQLトランザクションを処理するビューを作成しました。これは、LINQTOSQLを使用するために行われました。ここまで読んでくれてありがとう:)

私たちが抱えている問題は、アプリケーションに簡体字中国語を実装していることです。顧客のERPシステムでは、ERPシステムがベーステーブルに書き込むときにデータがマルチバイトとして書き込まれるように、ERPシステムのコードページを設定します。私の質問は、このマルチバイト情報を簡体字中国語に変換して戻すにはどうすればよいですか?WebアプリケーションとSSRSレポートの両方を利用する必要があるため、データベースレベルでこれを実行できるようにしたいと思います。

アイデアや方向性はありますか?複数の国が同じデータベースサーバーを使用しているため(データベースは異なりますが)、コードページを変更することはできないと思います。

よろしくお願いします

4

2 に答える 2

1

2つのvarchar文字が1つのUnicode文字を格納するために使用されていると言っていますか?

もしそうなら、nvarcharなど(または同様のもの)にバイナリするCASTを試してください

それ以外の場合は、COLLATE句を見てデータを強制しますか?

編集:

RemusによるMultiByteToWideCharの提案を使用するには、CLR関数が唯一の賭けかもしれません。

于 2010-01-05T20:53:16.080 に答える
0

このために最終的に行ったことは、SQL ステートメントから呼び出すことができる CLR 関数を作成することです。文字列と目的のコード ページを渡すと、変換された文字列が返されます。パフォーマンスは私たちが望んでいたものではありませんでしたが、それが私たちが見つけることができる唯一の道のようでした.

于 2010-02-16T16:21:08.257 に答える