sql-server - 如何在 SQL Server 中将二进制转换为整数
问题描述
我有一个 35 个字符的二进制代码,并且有预期的输出。需要有关如何在 SQL Server 中进行转换的逻辑。
输入(二进制):00000110010110110001110101101110100
预期输出(整数):816570
提前致谢。
解决方案
使用递归 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
,因此它可以保存大整数值:)
推荐阅读
- python - urllib.request -function 返回 None 而不是期望值
- graphql - GraphQL 查询中的数据规范化
- java - Java 中 docx4j 中的 SpreadsheetMLPackage.load 返回一个 OOXML 文件,而不是 XLSX 文件
- r - 是否有用于替换(或完全删除)解释线性模型(lm)中的变量的函数?
- spring-boot - 验证不适用于 RestController 中的 Map 键
- vba - VBA 新手:MSXML2.XMLhttp 从 POST 响应中去除会话 cookie
- python - 安装了 Python、Anaconda 和 Juypter 但无法正常工作
- javascript - 如何从 HTML 中获取选定的值并在 js 或 php 中处理它?
- r - 如果另一列中的字符是 R 中的 x,则在一列中赋值
- c++ - 当我的四边形在 OpenGl 中绘制时,纹理奇怪地拉伸,我需要它均匀地变形为四边形的形状,而不是如下所示。我该怎么做?