我有7位二进制数据作为varchar存储在SQL Server数据库中。这个7位的二进制数据最终需要转换成一个int。我试图获取这个二进制字符串,然后将其转换为varbinary,然后再转换为整数。对varbinary的强制转换可以接受十六进制字符串,但是我无法找到这种强制转换接受二进制字符串的方法。
示例字符串:
0000010
0000100
0001001这些应转换为:
2
4
9我可以创建一个CLR函数来调用C#函数,但我希望用T-SQL完成这一切。
发布于 2021-04-28 02:31:53
手动转换
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 idhttps://stackoverflow.com/questions/67287906
复制相似问题