创建除主键之外的所有列的哈希值 - 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 服务器之间切换。
我查询 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 服务器之间切换。