集計された列のすべての値のチェックサムを計算したいと考えています。
言い換えれば、私は同等のことをしたい
md5(group_concat(some_column))
このアプローチの問題は次のとおりです。
- 非効率です。md5関数に渡す前に、列のすべての値を一時ストレージの文字列として連結する必要があります
- group_concat の最大長は 1024 で、それ以降はすべて切り捨てられます。
(疑問に思っている場合は、値の連結が一貫した順序であることを確認できますが、信じられないかもしれませんが、group_concat() はその中で order by 句を受け入れます。たとえば、group_concat(some_column order by some_column)
)
MySQL は、非標準のビットごとの集計関数 BIT_AND()、BIT_OR()、および BIT_XOR() を提供しています。これらは、この問題に役立つと思われます。この場合、列は数値ですが、文字列列でそれを行う方法があるかどうか知りたいです。
この特定のアプリケーションでは、チェックサムが暗号学的に安全である必要はありません。