SQL Server конвертировать целое число в двоичную строку - PullRequest
18 голосов
/ 24 сентября 2008

Мне было интересно, есть ли в SQL простой способ преобразовать целое число в его двоичное представление и затем сохранить его как varchar.

Например, 5 будет преобразовано в «101» и сохранено как varchar.

Ответы [ 12 ]

0 голосов
/ 29 февраля 2016

Я считаю, что этот метод упрощает многие другие идеи, которые были представлены другими. Он использует побитовую арифметику вместе с трюком FOR XML с CTE для генерации двоичных цифр.

DECLARE @my_int INT = 5

;WITH CTE_Binary AS
(
    SELECT 1 AS seq, 1 AS val
    UNION ALL
    SELECT seq + 1 AS seq, power(2, seq)
    FROM CTE_Binary
    WHERE
        seq < 8
)
SELECT
(
    SELECT
        CAST(CASE WHEN B2.seq IS NOT NULL THEN 1 ELSE 0 END AS CHAR(1))
    FROM
        CTE_Binary B1
    LEFT OUTER JOIN CTE_Binary B2 ON
        B2.seq = B1.seq AND
        @my_int & B2.val = B2.val
    ORDER BY
        B1.seq DESC
    FOR XML PATH('')
) AS val
0 голосов
/ 07 марта 2015

Как насчет этого ...

SELECT number_value
,MOD(number_value / 32768, 2) AS BIT15
,MOD(number_value / 16384, 2) AS BIT14
,MOD(number_value /  8192, 2) AS BIT13
,MOD(number_value /  4096, 2) AS BIT12
,MOD(number_value /  2048, 2) AS BIT11
,MOD(number_value /  1024, 2) AS BIT10
,MOD(number_value /   512, 2) AS BIT9 
,MOD(number_value /   256, 2) AS BIT8 
,MOD(number_value /   128, 2) AS BIT7 
,MOD(number_value /    64, 2) AS BIT6 
,MOD(number_value /    32, 2) AS BIT5 
,MOD(number_value /    16, 2) AS BIT4 
,MOD(number_value /     8, 2) AS BIT3 
,MOD(number_value /     4, 2) AS BIT2 
,MOD(number_value /     2, 2) AS BIT1 
,MOD(number_value      , 2) AS BIT0 
FROM your_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...