我有一个MySQL查询表列的哈希值,除了主键。
我需要为SQL Server做同样的事情,到目前为止,我已经尝试过哈希字节,但结果是不正确的。
MySQL中除主键外所有列的哈希值如下
SELECT MD5(CONCAT(ISNULL(COLUMN1,''),ISNULL(COLUMN2,''),ISNULL(COLUMN3,''))) as HASHVALUE, PRIMARYKEY FROM TABLE_NAME1
和什么我已经尝试与SQL到目前为止是这个…
SELECT HashBytes('MD5', COLUMN1) AS HASHVALUE , PRIMARYKEY FROM TABLE_NAME1
mysql>
|HASHVALUE | Primary |
|:------------------------------- |:-------:|
|7a16284f87ab262f0047f4c0b4e50b2c | 0 |
|d41b398c603086da409e87ee35824cf6 | 2 |
|c0e7b9b9c29703282a9f192a4c0aead9 | 6 |
|ce13595c356a0a373140f3fda1eb5fb3 | 7 |
SQL>
| HASHVALUE | PRIMARY |
| ---------- | ------- |
|ã $t J ¦OlU | 1 |
SQL Server的结果仍然是二进制。必须转换为字符串:
LOWER(CONVERT(varchar(32), HashBytes('MD5', COLUMN1), 2))
查看此处,以证明即使合并了列,也可以得到相同的结果:
https://dbfiddle.uk/?rdbms=sqlserver_2019&小提琴= b11c422fe9236043ba5edbeb7d97043d
你可以使用链接页面顶部的菜单在MySql和SQL Server之间切换。