Sql server T-SQL中的整型二进制字符串

Sql server T-SQL中的整型二进制字符串,sql-server,tsql,Sql Server,Tsql,我将7位二进制数据作为varchar存储在SQL Server数据库中。这个7位二进制数据最终需要转换成整数。我试图获取这个二进制字符串,然后转换成varbinary,然后转换成整数。对varbinary的转换可以接受十六进制字符串,但是我找不到一种方法让这个转换接受二进制字符串 示例字符串: 0000010 0000100 0001001 这些应转换为: 2 4 9 我可以创建一个CLR函数来调用C#函数,但我希望能在T-SQL中完成这一切。手动转换 select id, sum(cast

我将7位二进制数据作为
varchar
存储在SQL Server数据库中。这个7位二进制数据最终需要转换成整数。我试图获取这个二进制字符串,然后转换成
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
手工兑换

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

只需创建一个包含128个可能字符串和值的表并从中查找即可创建一个包含128个可能字符串和值的表并从中查找即可!非常感谢。天才!非常感谢。