Convert decimal lt;--gt; binary with T-SQL(转换十进制 lt;--gt;二进制与 T-SQL)
本文介绍了转换十进制 <-->二进制与 T-SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用 T-SQL 将二进制(基数 2 存储为 varchar)转换为十进制(基数 10 存储为 int 或 bigint),反之亦然?
How can I convert binary (base 2 stored as varchar) into decimal (base 10 stored as int or bigint) and the other way around, using T-SQL?
示例结果:
7
(dec) <-->111
(bin)136
(dec) <-->10001000
(bin)2123942362
(dec) <-->1111110100110001100100111011010
(bin)
7
(dec) <-->111
(bin)136
(dec) <-->10001000
(bin)2123942362
(dec) <-->1111110100110001100100111011010
(bin)
推荐答案
这个答案可以处理 bigint
This answer can handle bigint
转换为位(包含 1 和 0 的 varchar)
Convert to bit(varchar containing 1 and 0)
DECLARE @input BIGINT = 9223372036854775807
;WITH N(N)AS
(
SELECT top 63
POWER(cast(2 as bigint),
ROW_NUMBER()over(ORDER BY (SELECT 1))-1)
FROM
(VALUES(1),(1),(1),(1))M(a),
(VALUES(1),(1),(1),(1))L(a),
(VALUES(1),(1),(1),(1))K(a)
)
SELECT
COALESCE
(
REVERSE
(
(
SELECT CAST(@input/N%2 as CHAR(1))
FROM N
WHERE N <= @input
for xml path(''), type
).value('.', 'varchar(max)')
)
, '0'
)
结果:
111111111111111111111111111111111111111111111111111111111111111
将包含位值的 varchar 转换为 bigint
Convert varchar containing bit values to bigint
DECLARE @input varchar(max) =
'111111111111111111111111111111111111111111111111111111111111111'
;WITH N(V) AS
(
SELECT
ROW_NUMBER()over(ORDER BY (SELECT 1))
FROM
(VALUES(1),(1),(1),(1))M(a),
(VALUES(1),(1),(1),(1))L(a),
(VALUES(1),(1),(1),(1))K(a)
)
SELECT SUM(SUBSTRING(REVERSE(@input),V,1)*POWER(CAST(2 as BIGINT), V-1))
FROM N
WHERE V <= LEN(@input)
结果:
9223372036854775807
这篇关于转换十进制 <-->二进制与 T-SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:转换十进制 <-->二进制与 T-SQL
猜你喜欢
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- SQL 临时表问题 2022-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01