我只是使用一些简单的 sql 来尝试让它工作,然后我会将它实现到我的程序中。
所以我的代码如下:
select convert(varbinary(16), cast('63' as int)))
这个查询的结果是 0x000003F,这不是我想要的,我期待的是 000111111。
有谁知道它为什么这样做以及如何让它将数字显示为 1 和 0,将不胜感激,谢谢。这是使用 MSSql。
我只是使用一些简单的 sql 来尝试让它工作,然后我会将它实现到我的程序中。
所以我的代码如下:
select convert(varbinary(16), cast('63' as int)))
这个查询的结果是 0x000003F,这不是我想要的,我期待的是 000111111。
有谁知道它为什么这样做以及如何让它将数字显示为 1 和 0,将不胜感激,谢谢。这是使用 MSSql。
正如 MySQL 中的 collapsar 注释,您需要指定基数 2,这是您在此处缺少的。没有它,MySQL 在此处默认为十六进制编码,但您需要提供一个数字 (63)、一个起始基数 (10) 和一个最终基数 (2)。
把它放在一起你得到select conv(63, 10, 2)
sqlfiddle
在 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;
输出:
0000000000001100