2017-02-15 3 views
1

長い文字列とHASHBYTESを呼び出す場合、私は私がオブジェクトを比較することができるように一緒に複数のフィールドのためのMD5ハッシュを計算しようとしています計算MD5

Msg 8152, Level 16, State 10, Line 11 
String or binary data would be truncated. 

を取得しています、
は、この問題を回避とにかくあり?

+1

おそらくコードを共有できますか?そのエラーメッセージは挿入物からのものです。 AFAIKでは、MD5への入力の長さに制限はありません。私はちょうど大量の入力でそれを試して、それは正常に動作します。 –

+1

[documentation](https://msdn.microsoft.com/en-us/library/ms174415.aspx)には、8000バイトの戻り値に制限があります。あなたの入力がこれを超過する原因となった場合は、運が悪い可能性があります。しかし、本当にハッシュコードを計算するために非常に多くのフィールドを使用する必要がありますか? –

+1

@SeanLange最大戻りサイズは8K、q.v.上記の私のコメント。 –

答えて

1

SQL Server 2008以降を使用していると仮定すると、CHECKSUM機能を使用します。

https://msdn.microsoft.com/en-us/library/ms189788.aspx

チェックサムは、引数のリストの上に、チェックサムと呼ばれるハッシュ値を算出します。ハッシュ値は、ハッシュインデックスを構築するためのものです。 CHECKSUMの引数が列で、インデックスが計算されたCHECKSUM値を超えて構築されている場合、結果はハッシュインデックスになります。これは、列に対する等価検索に使用できます。

CHECKSUMは、比較できないデータ型の列があればエラーを返します。比較できないデータ型は、text、ntext、image、XML、およびcursorです。また、上記の型のいずれかを基本型とするsql_variantもあります。

関連する問題