CHECKSUM 相关函数:CHECKSUM、CHECKSUM_AGG、BINARY_CHECKSUM和HASHBYTES

简介:

CHECKSUM 相关函数:CHECKSUM、CHECKSUM_AGG、BINARY_CHECKSUM和HASHBYTES

CHECKSUM 函数的主要意图是基于一个表达式或者列表创建一个哈希索引。如果说你用它在表级别计算和存储一个列,表示基于这些列上的 CHECKSUM 使得这条记录在表里唯一,而这有助于判断是否一行数据有改变。这个架构可被用来替代关联所有的列使得记录唯一,来检查是否这条记录被更新。

 

当使用这些函数的时候,有些需要注意的:

1. 你需要确保在两次 CHECKSUM 比较之间,列或表达式的顺序是相同的,否则结果将会不同。

2. 不推荐用 CHECKSUM(*),因为这种方式产生的值将会依赖于在运行时表定义的列顺序,在这个过程中表顺序可能会被改变。所以,显示定义列的列表。

3. 当包含 datetime 数据类型的列时要注意,因为它是精确到1/300秒,小的变动就导致不同的CHECKSUM值。因此,如果你不得不使用 datetime 类型列,你先要确保获得准确的日期加小时或分钟的组合,这个取决于你想要的精确度。

 

四个相关的函数,下面介绍:

 

【内置函数 - 系统函数 - CHECKSUM】

功能:返回按照表的某一行或一组表达式计算出来的校验和值。 CHECKSUM 用于生成哈希索引。

语法:CHECKSUM ( * | expression [ ,...n ] )

参考:https://msdn.microsoft.com/zh-cn/library/ms189788.aspx

 

【内置函数 - 聚合函数 - CHECKSUM_AGG】

功能:返回组中各值的校验和。 将忽略 Null 值。 后面可以跟随 OVER 子句。

语法:CHECKSUM_AGG ( [ ALL | DISTINCT ] expression )

参考:https://msdn.microsoft.com/zh-cn/library/ms188920.aspx

 

【内置函数 - 系统函数 - BINARY_CHECKSUM】

功能:返回按照表的某一行或表达式列表计算的二进制校验和值。 BINARY_CHECKSUM 可用于检测表中行的更改。

语法:BINARY_CHECKSUM ( * | expression [ ,...n ] )

参考:https://msdn.microsoft.com/zh-cn/library/ms173784.aspx

 

【内置函数 - 加密函数 - HASHBYTES】

功能:返回其在 SQL Server 中的输入的 MD2、MD4、MD5、SHA、SHA1 或 SHA2 哈希值。

语法:HASHBYTES ( '<algorithm>', { @input | 'input' } )

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512

参考:https://msdn.microsoft.com/zh-cn/library/ms174415.aspx















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1607398 ,如需转载请自行联系原作者



相关文章
|
关系型数据库 MySQL
pt-table-checksum原理详解
环境 MySQL: MySQL 5.6.27 OS: centos 6.6 tool: pt-table-checksum 2.2.15 它能做什么 业界最流行的MySQL主从数据对比工具,数据一致性检测最好的的工具,没有之一 如何使用 ./pt-table-che
7477 0
|
关系型数据库 数据库 索引
pt-table-checksum
pt-table-checksum是目前可以说是最好的查看主从一致性的工具 先来个使用例子,有助快速上手使用 在主库执行:mysql>GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON .
1710 0
|
算法 数据安全/隐私保护 SQL
|
SQL 关系型数据库 MySQL
使用pt-table-checksum校验MySQL主从复制
pt-table-checksum是一个基于MySQL数据库主从架构在线数据一致性校验工具。其工作原理在主库上运行, 通过对同步的表在主从段执行checksum, 从而判断数据是否一致。
1768 0
|
运维 Oracle 关系型数据库
【故障处理】EXP-00003: no storage definition found for segment
EXP-00003: no storage definition found for segment EXP-3 No Storage Definition Found For Segment (文档 ID 443453.
1908 0