powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбираю рекурсию для перевода INT в бинарную строку (23 = 10111). Не пойму...
4 сообщений из 4, страница 1 из 1
Разбираю рекурсию для перевода INT в бинарную строку (23 = 10111). Не пойму...
    #39821216
PowRTocH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В сети нашел любопытный вариант преобразования INT в бинарную строку:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH ctebins 
     AS (SELECT num AS num_orig, 
                num  AS working_level, 
                Cast('' AS VARCHAR(max)) AS binval 
         FROM   nums_bin 
         UNION ALL 
         SELECT c.num_orig, 
                c.working_level / 2, 
                Cast(c.working_level % 2 AS VARCHAR(max)) 
                + c.binval 
         FROM   ctebins c 
         WHERE  c.working_level > 0) 
SELECT num_orig, 
       binval 
FROM ctebins 
WHERE working_level = 0; 



По ходу стал разбирать, как запрос работает и кое-что вызвало вопрос.

Почему c.working_level / 2 работает как FLOOR(c.working_level / 2)? То есть, если сейчас значение working_level окажется 5 / 2 , то в следующем уровне рекурсии вернется 2 .

К примеру, CAST((5/2) AS INT) возвращает 3!
...
Рейтинг: 0 / 0
Разбираю рекурсию для перевода INT в бинарную строку (23 = 10111). Не пойму...
    #39821247
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PowRTocH,

Читайте в документации
Precision, scale, and Length
Data type precedence
...
Рейтинг: 0 / 0
Разбираю рекурсию для перевода INT в бинарную строку (23 = 10111). Не пойму...
    #39821278
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PowRTocHК примеру, CAST((5/2) AS INT) возвращает 3!У вас не MSSQL
...
Рейтинг: 0 / 0
Разбираю рекурсию для перевода INT в бинарную строку (23 = 10111). Не пойму...
    #39821313
PowRTocH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитал =)

Забыл упомянуть…

Я переносил этот скрипт на MySQL, оказалось, к примеру CAST(2.85 AS INT) в MySQL возвращает 3 , а SQL Server возвращет 2 . То есть последний ничего не придумывает, а просто забирает целочисленную часть.

Нюансы в поведении этих СУБД.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбираю рекурсию для перевода INT в бинарную строку (23 = 10111). Не пойму...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]