sql >> データベース >  >> RDS >> Sqlserver

checksum() が異なる文字列に対して同じ値を返す理由

    SQL CHECKSUM() と MD5 は ハッシュ関数 です .ハッシュは、任意の数の文字/バイトを取り、固定数の文字/バイトを返すことができる一方向アルゴリズムです。

    これは、入力が 1 文字であろうと本全体 (戦争と平和) であろうと、同じ長さの応答が返されることを意味します。したがって、入力は無限の組み合わせであり、出力は有限です。それに基づいて、異なる値に対して同じハッシュを取得することは避けられません。 ハッシュ衝突 と呼ばれます .優れたハッシュ アルゴリズムは、これらの衝突する値を見つけにくくするために、これを軽減しようとします。

    しかし、ハッシュについての十分な理論。これがまさにあなたの質問に対する答えです。 CHECKSUM()の問題 ?



    1. 値が暗黙的に日付形式に変換される方法を理解できません

    2. PostgreSQL:forループを使用してテーブルの行を反復処理し、現在の行に基づいて列の値を取得します

    3. 変数が空白の場合、Where 句はありません

    4. id列のキー値を使用してMySQLからPHP配列を生成します