SQL Server 2012中是否有任何方法可以生成一组行和列的哈希?
我想生成一个哈希,将其存储在父记录中.当更新进来时,我将传入的哈希与父记录哈希进行比较,我将知道数据是否已更改.
所以这样的事情会很好:
SELECT GENERATEHASH(CONCATENATE(Name, Description, AnotherColumn))
FROM MyChildTable WHERE ParentId = 2 -- subset of data belong to parent record 2
Run Code Online (Sandbox Code Playgroud)
"CONCATENATE"将是一个聚合函数,它不仅可以连接列,还可以连接结果集中的行.像MAX一样,但返回所有内容作为字符串连接.
希望这可以帮助您了解我的意思!
我试图解决的根本问题是我的客户端系统执行大量分层数据的导入.如果我可以通过使用哈希来避免处理,那么我认为这将节省大量时间.目前,当必须处理重复数据时,SP的运行速度要慢300%.
非常感谢
您可以使用CHECKSUM_AGG聚合.它是为此目的而制作的.
小智 9
select HashBytes('md5',convert(varbinary(max),(SELECT * FROM MyChildTable WHERE ParentId = 2 FOR XML AUTO)))
Run Code Online (Sandbox Code Playgroud)
但是HashBytes仅限于8000字节......你可以创建一个函数来获得每8000字节的de Md5 ....