2011-11-15 10 views
0

こんにちは私は、数値が正でユニークな20文字未満の数値をハッシュするのに適した方法を見つけようとしていました。いずれかの提案がありますか?SQL Server:数値キャラクタを取得し、最大長20文字でハッシュする

+0

数値出力ハッシュですか?どんな範囲の数字がどれくらい大きいの?それらをテーブルに入れてIDを使用するか? –

+0

私はあなたが特定のデータサイズ***と*** guarnateeの一意性にハッシュできることに気づいていません。ここに何をしようとしているのか、その理由は何ですか?私たちは、代替アプローチや近似的アプローチを提供することができます。たとえば、検索のスピードを上げるためにハッシュしているのであれば、インデックスはすでにそれを行っています。 2つの同一の値をハッシュしてそれぞれの固有のIDを生成する場合、IDENTITYカラムはそのようなことを行います。 – MatBailie

+0

@Dems質問者は「十分にユニーク」を意味する可能性が最も高いです:http://stackoverflow.com/questions/2444321/how-are-hash-functions-like-md5-unique –

答えて

0

一般にハッシュについては、HASHBYTES機能を使用します。その後、バイナリデータを文字列に変換し、最初の20文字だけを選択することができます。これはまだ一意でなければなりません。

HASHBYTESの制限(たとえば8000バイト)を回避するには、増分的にハッシュすることができます。それぞれの値に対して、前のハッシュを追加する値と連結して再ハッシュします。これにより、順序などで一意になります.1つの値に8000バイト近くを追加しない限り、ハッシュのデータ切り捨ては発生しません。

+0

ハッシュする文字列は最大8〜9文字です。あなたの答えをありがとう – user1047949

関連する問題