汉明重量/人口数量在T-SQL中
发布时间:2020-07-09 07:10:02 所属栏目:MsSql 来源:互联网
导读:我正在寻找一种快速计算BINARY(1024)字段的汉明重量/总体数/“1位数”的方法. MySQL有一个BIT_COUNT函数可以做类似的事情.我在T-SQL中找不到类似的功能? 或者您是否建议将二进制数据存储在另一种类型的字段中? 如果你不知道我在说什么,这里是Wikipedia arti
我正在寻找一种快速计算BINARY(1024)字段的汉明重量/总体数/“1位数”的方法. MySQL有一个BIT_COUNT函数可以做类似的事情.我在T-SQL中找不到类似的功能? 或者您是否建议将二进制数据存储在另一种类型的字段中? 如果你不知道我在说什么,这里是Wikipedia article about the hamming weight. 解决方法您可以使用具有预先计算的汉明权重的辅助表来获取小数字(如字节),然后相应地拆分值,连接到辅助表并获得部分汉明权重的总和作为值的汉明权重:-- define Hamming weight helper table DECLARE @hwtally TABLE (byte tinyint,hw int); INSERT INTO @hwtally (byte,hw) VALUES (0,0); INSERT INTO @hwtally (byte,hw) SELECT 1 - byte,1 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 3 - byte,2 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 7 - byte,3 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 15 - byte,4 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 31 - byte,5 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 63 - byte,6 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 127 - byte,7 - hw FROM @hwtally; INSERT INTO @hwtally (byte,hw) SELECT 255 - byte,8 - hw FROM @hwtally; -- calculate WITH split AS ( SELECT SUBSTRING(@value,number,1) AS byte FROM master.dbo.spt_values WHERE type = 'P' AND number BETWEEN 1 AND LEN(@value) ) SELECT Value = @value,HammingWeight = SUM(t.hw) FROM split s INNER JOIN @hwtally t ON s.byte = t.byte (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- MS SQL SERVER 数据库日志压缩方法与代码
- 如何将从Exchange数据库中提取的PST导入到Linux IMAP服务器
- SQLSERVER中union,cube,rollup,cumpute运算符使用说明
- sql-server – SQL Server 2008在Insert,Update之后运行触发
- SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍
- 深入分析MSSQL数据库中事务隔离级别和锁机制
- 在做SQL故障转移群集的时候应该选择哪种模式?
- 被遗忘的SQLServer比较运算符谓词
- sql-server – SQL Server多语言数据支持
- 清空MSSQL日志 与set recovery simple