我想计算汇总列的所有值的校验和。
换句话说,我想做一些等价的
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(),我认为它们对这个问题很有用。在这种情况下,该列是数字的,但我很想知道是否有办法使用字符串列。
对于这个特定的应用程序,校验和不必是密码安全的。