我想要一个包含哈希或校验和的列作为单个值来比较记录。是否有可能在纯 SQL 中做这样的事情?您认为这与 PHP 中的编程解决方案相比更实用吗?
问问题
1658 次
1 回答
1
是的,这是可能的。 MD5()
, SHA1()
, 和SHA2()
都是可行的散列函数。
您必须逐行计算这些函数的值,逐个查询。例如,每次插入一行时,都必须插入哈希值,执行如下操作:
INSERT INTO x
name=?name,
address=?address,
hash=MD5(CONCAT(?name,?address))
您需要在每次更新时执行类似的操作。如果你弄错了,这非常容易,尤其是当你的表结构发生变化时,你的哈希变得比无用更糟糕。
顺便说一句,MD5 对身份验证不再具有加密安全性。但是,对于封闭系统中的这种散列,它仍然是一个可以接受的选择。
于 2012-09-15T13:07:07.420 回答