创建除主键以外的所有列的哈希值- SQL Server



我有一个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之间切换。

最新更新