有没有相当于

CHECKSUM_AGG(CHECKSUM(*))

对于哈希字节?

我知道你可以
SELECT
    HashBytes('MD5',
        CONVERT(VARCHAR,Field1) + '|'
      + CONVERT(VARCHAR,Field2) + '|'
      + CONVERT(VARCHAR,field3) + '|'
    )
FROM MyTable

但我不确定如何将所有计算出的哈希字节记录聚合为 SQL 中的单个值。

我想要这样做的一个原因是在将数据移动到我的系统之前确定自上次加载以来源表中的数据是否发生了变化。

最佳答案

如果您想检查给定的行是否已更改,我强烈建议您使用“时间戳”列。
该值在每次行修改时由 Sql Server 自动更新。
那么如果一行被修改了,修改后的值就会不一样,不用实现逻辑或者查询整个表就可以注意到。

但是,如果您想知道是否至少更新了一行,我建议您使用:

声明@Tablename sysname = 'MyTable';

SELECT modify_date FROM sys.tables WHERE name = @Tablename;

(如果您在业务层中使用 .Net,那么查看 SqlDependency 可能会很有趣)

关于sql - 将 sql 结果集聚合为 HashBytes 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18241158/

10-11 02:59