- - PR -
CHECKSUM値について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-26 15:37
いつもお世話になっております。
SQLServer2000を使用しています。 行に加えられた変更を検出するのにCHECKSUMを使おうと思ったのですが、 DECIMAL型の列の値を変更しても、CHECKSUM値が同じ結果で返ってきてしまいます。 試しに以下を実行しても、やはり戻り値が全く同じ結果になってしまいました。 --------------------------------------- DECLARE @val decimal(12,0) SET @val = 10 SELECT BINARY_CHECKSUM(@val) SET @val = 100000 SELECT BINARY_CHECKSUM(@val) --------------------------------------- なぜなのでしょうか? お分かりになる方がいらっしゃいましたらご教授ください。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-01-28 15:53
チェックサムとは何かを考えると当たり前の気がしますが、 チェックサムは必ず一意にならないと思います。 CHECKSUMの内部で何をやっているのかわかりませんが、 同じ値になることがあっても仕方ないと思います。 | ||||
|
投稿日時: 2005-01-28 17:29
CHECKSUM は、Japanese_BIN のみ BINARY_CHECKSUM として扱っていると思われます。
それ以外の場合は、特定の変換をかけているようですね。 | ||||
|
投稿日時: 2005-02-02 19:31
msoさん、HIROさん、ありがとうございます。
>msoさん 当然ながら(decimal(12,0)とCHECKSUMの返り値は)型のサイズが異なりますので どんな値を与えても必ずユニークな値が返ってくるとは思っていないのですが、 10倍、100倍、1000倍...で同じ値というのはおかしいのではないかと思い 質問させていただきました。 >HIROさん CHECKSUM、BINARY_CHECKSUM共に値は変わりませんでした。 照合順序も疑ってみたのですが、やはり値に変化はありませんでした。 |
1