首页 > 解决方案 > 如何在 SQL Server 中将二进制转换为整数

问题描述

我有一个 35 个字符的二进制代码,并且有预期的输出。需要有关如何在 SQL Server 中进行转换的逻辑。

输入(二进制):00000110010110110001110101101110100
预期输出(整数):816570

提前致谢。

标签: sql-serverbinary-data

解决方案


使用递归 CTE 尝试以下查询:

declare @bit varchar(50) = '00000110010110110001110101101110100'

;with cte as (
    select 0 [bit], cast(1 as bigint) powerOf2, substring(@bit, len(@bit) - 1, 1) [bitValue]
    union all
    select [bit] + 1, powerOf2 * 2, substring(@bit, len(@bit) - [bit] - 1, 1)
    from cte
    where [bit] + 1 < len(@bit)
)

select sum(powerOf2 * bitValue) from cte

将第二列设为 很重要bigint,因此它可以保存大整数值:)


推荐阅读