Как разбить динамическую строку на строки (справа налево) - PullRequest
0 голосов
/ 11 июня 2019

Этот запрос преобразует динамическое 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 Ответ

3 голосов
/ 11 июня 2019

Использование 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...