我希望将包含散列或校验和的列作为单个值来比较记录。是否可以在纯SQL中执行类似的操作?您是否认为这与PHP中的程序化解决方案相比是实用的?
答案 0 :(得分:1)
是的,这是可能的。 MD5()
,SHA1()
和SHA2()
都是可行的哈希函数。
您必须逐行计算这些函数的值并按查询查询。例如,每次插入行时都必须插入哈希值,执行以下操作:
INSERT INTO x
name=?name,
address=?address,
hash=MD5(CONCAT(?name,?address))
您需要在每次更新时执行类似的操作。如果你弄错了,这非常容易,特别是如果你的桌子结构改变了,你的哈希变得比无用的更糟糕。
顺便说一句,MD5不再具有加密安全性以进行身份验证。但是,对于封闭系统中的这种散列,它仍然是可接受的选择。