如何在行中拆分动态字符串(从右到左)

时间:2019-06-11 16:52:23

标签: sql-server sql-server-2008

此查询将动态int转换为二进制,但我想拆分为行。

declare @value int 
set @value = 96

declare @result varchar(32) 
set @result = '' 

while 1 = 1 
begin
    select 
        @result = convert(char(1), @value % 2) + ',' +@result,
        @value = convert(int, @value / 2) 

    if @value = 0 break  
end

select substring(@result, 1, len(@result)-1) as result

请帮助我找到解决方案。

这是我的查询结果。

1,1,0,0,0,0,0

我的问题是:如何将结果从右到左分成几行?

我的结果必须是这个(我正在尝试插入#table中):

0
0
0
0
0
1
1

谢谢

1 个答案:

答案 0 :(得分:3)

使用WHILE似乎是个坏主意。如果您想实现自己的目标,这将是一个更快的解决方案:

DECLARE @I int = 96

SELECT CONVERT(bit,@i & V.b)
FROM (VALUES(1),(2),(4),(8),(16),(32),(64)) V(b)
ORDER BY V.b;