是否有可能在数据输入处创建由其他列值组成的散列并将其存储在一起?



例如,输入的数据可能是name, home_addresshash

+--+----+---------+-----------------------------------------+
|id|name|phone    |hash                                     |
+-----------------------------------------------------------+
|1 |Joe |123123123|dfaf41c21afbe359228c5a0ed1095b30ff4f50ac |
+-----------------------------------------------------------+
|2 |Doe |123123332|0fd7083d2af4624c531e8fc937d7a9c945f7ef32 |
+--+----+---------+-----------------------------------------+

是否有可能在输入记录时生成两个(namephone)的哈希值,并仅使用mySQL作为哈希列上的哈希值存储?

我可以脚本这种行为,但我想知道是否有可能在mySQL上这样做。

任何帮助或建议都是非常感谢的。

谢谢!

MySQL内置函数SHA1()返回40位十六进制哈希值:

SELECT SHA1('mystring');
输出:

9ce3ea4d6fac2165933b3971e6d5a13753c7d878

你可以这样连接你的值:

SELECT SHA1(CONCAT(name, phone));
插入时

:

INSERT INTO table1 (name, phone, hash)
VALUES ('Joe', '123123123', SHA1(CONCAT('Joe', '123123123')));

更新所有行:

UPDATE table1
SET hash = SHA1(CONCAT(name, phone));

提示:如果您以十六进制表示形式存储值,请选择单个字节字符集,如ascii,特别是如果您计划对列进行索引。utf8索引的大小是它的3倍。此外,像SHA1这样的散列算法总是输出相同长度的散列,因此考虑使用CHAR列而不是VARCHAR列。

相关内容

最新更新