0

OracleとSQLサーバーの両方でそれらを合計できるように(最終的に単一の値にする必要があります)、16進値を数値に変換する方法が必要です。両方のサーバーで同じ結果を得るのに苦労しています。これらは 16 進値です。

        SQL SERVER                            ORACLE
____________________________________________________________________
0x6512BD43D9CAA6E02C990B0A82652DCA  6512BD43D9CAA6E02C990B0A82652DCA
0xC20AD4D76FE97759AA27A0C99BFF6710  C20AD4D76FE97759AA27A0C99BFF6710
0xC51CE410C124A10E0DB5E4B97FC2AF39  C51CE410C124A10E0DB5E4B97FC2AF39
0x1FF1DE774005F8DA13F42943881C655F  1FF1DE774005F8DA13F42943881C655F
0x1C383CD30B7C298AB50293ADFECB7B18  1C383CD30B7C298AB50293ADFECB7B18
0xC74D97B01EAE257E44AA9D5BADE97BAF  C74D97B01EAE257E44AA9D5BADE97BAF
0x67C6A1E7CE56D3D6FA748AB6D9AF3FD7  67C6A1E7CE56D3D6FA748AB6D9AF3FD7
0x6F4922F45568161A8CDF4AD2299F6D23  6F4922F45568161A8CDF4AD2299F6D23

私はどんな解決策にもかなりオープンで、どんな助けも大歓迎です。ありがとう。

4

2 に答える 2

2

オラクル:

select to_number('6512BD43D9CAA6E02C990B0A82652DCA', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') from dual;     

SQLサーバー:

select convert(int, convert(varbinary, '0x6512BD43D9CAA6E02C990B0A82652DCA', 1))

あなたが扱っている数字は巨大であるため、あなたが抱えている変換の問題を説明している可能性があることに注意してください. それらはUDIDのように見えます。これらの 16 進文字列を整数に変換する正当な理由はありますか?

于 2012-07-06T16:21:51.043 に答える
0

これらの 16 進値は大きすぎて、数値、ピリオドとして格納できません。与えられた例は 32 の 16 進数で、124 ビット (符号なし) のデータ型が必要です。ネイティブ整数を使用しようとするオーバーフローします。それらを合計すると、さらに大きな値が生成されます。

いずれにせよ、任意に長い 16 進数を処理する方法を見つける必要があります。これを行うには、数学ライブラリを見つけるか、作成します。Oracle では、おそらく Java または .NET ストアド プロシージャを使用してこれを行うことができます。同様に、SQL Server にはおそらく使用可能な .NET ルーチンがあり、一貫したコードが得られます。PL/SQL または T-SQL ソリューションが非常にうまく機能する可能性は低いです。

于 2012-07-06T16:49:41.563 に答える