sql-server - 在 T-SQL 中将二进制字符串转换为 INT
问题描述
我有 7 位二进制数据存储在 SQL Server 数据库中作为varchar
. 这 7 位二进制数据最终需要转换为 int。我试图获取这个二进制字符串,然后varbinary
转换为整数,然后再转换为整数。转换为varbinary
可以接受十六进制字符串,但我无法找到这种转换接受二进制字符串的方法。
示例字符串:
0000010
0000100
0001001
这些应转换为:
2
4
9
我可以创建一个 CLR 函数来调用 C# 函数,但我希望这一切都在 T-SQL 中完成。
解决方案
手动转换
select id, sum(cast(substring(str, 7-p.pos, 1) as int) * power(2, p.pos)) val
from (
SELECT 1 id, '0001001' str union all
SELECT 2 id, '0001011' str
) t
cross apply (
values
(0)
,(1)
,(2)
,(3)
,(4)
,(5)
,(6)
) p(pos)
group by id
推荐阅读
- python - 带循环的条件列
- java - 为什么这个复合主键被视为唯一的,我该如何解决?
- python - Excel IF 到 python
- r - 如何将R中的pdf图作为恒定图像?
- node.js - TSOA Express App 返回无法获取端点
- robo3t - 如何使用 Robo 3T 连接到 AWS Documentdb?
- c++ - Berkeley DB C++ 显示不正确的键值字符串数据
- android-studio - 更新后无法解析 Android Manifest 中的 XML
- sql-server - 索引和查询 JSON 数组
- python-3.x - 计算存储在数据框中的延迟对象