我试图将sql中的基数为10的数字转换为基数2 /二进制数,但是返回的是什么,而不是“0”和“0”。

时间:2017-03-13 11:55:01

标签: sql sql-server binary sql-convert

我只是使用一些简单的sql来尝试让它工作,然后我会将它实现到我的程序中。

所以我的代码如下:

select convert(varbinary(16), cast('63' as int)))

我的查询结果是0x000003F,这不是我想要的,我期待着000111111。

有谁知道为什么会这样做以及如何让它将数字显示为1&0;和0' s,我们将不胜感激,谢谢。这是使用MSSql。

2 个答案:

答案 0 :(得分:0)

作为MySQL中的collapsar笔记,你需要指定base 2,这是你在这里缺少的。没有它,MySQL默认为十六进制编码,但你需要提供一个数字(63),一个起始基数(10)和一个最终基数(2)。

将这些放在一起,即可获得select conv(63, 10, 2) sqlfiddle

答案 1 :(得分:0)

在MSSQL中我想你可以试试这个:

DECLARE @var1 AS int;
SET @var1=12;
WITH A AS (
    SELECT 0 AS ORD, @var1 AS NUMBER, CAST('' AS VARCHAR(20)) AS BITS
    UNION ALL 
    SELECT ORD+1, NUMBER/2,  CAST(BITS+CAST(NUMBER%2 AS VARCHAR(20)) AS VARCHAR(20))
          FROM A 
          WHERE  NUMBER>0)
SELECT RIGHT('000000000000000'+ CASE WHEN BITS='' THEN '0' ELSE REVERSE(BITS) END,16) AS BIN_VALUE
FROM A
WHERE NUMBER=0;

输出继电器:

BIN_VALUE

0000000000001100