创建除主键之外的所有列的哈希值 - SQL 服务器

Create hashvalue of all column except primary key - SQL Server

我查询 MySQL 以获取 table 列的哈希值,主键除外。

我需要为 SQL 服务器做同样的事情 到目前为止我已经尝试过 hashbytes 但结果看起来不正确。

我用来为除主键之外的所有列创建散列值的 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 服务器结果仍然是二进制的。您必须转换为字符串:

LOWER(CONVERT(varchar(32), HashBytes('MD5', COLUMN1), 2))

在此处查看以证明您获得了相同的结果,即使在合并列后也是如此:

https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=b11c422fe9236043ba5edbeb7d97043d

您可以使用链接页面顶部的菜单在 MySql 和 SQL 服务器之间切换。