1

我已经尝试谷歌搜索了一段时间,但找不到任何东西,但如果这真的很明显,我深表歉意。

我有一个长度始终为 8 的布尔数组,我想将相应的二进制值插入到binary(1)字段中。我正在使用 SQL Server 2012。

目前我将它转换成一个字符串,例如"10100101",并创建一个看起来像的查询字符串"INSERT INTO Table1 VALUES('10100101');"也一直在尝试获得一个SELECT等效的语句"SELECT * FROM Table1 WHERE bin_val=10100101;"

当我执行语句时,我总是遇到语法错误。我尝试了多种变体(例如,带/不带引号等,并将数字以不同的格式,例如"0xA5"),但没有运气。

有什么建议么?

ps用java写代码

4

2 回答 2

2

首先,您需要将基于二进制的数字转换为基于十进制的数字。然后,您可以简单地将该值转换为 datatype BINARY。所以,假设你的字符串总是 8 位长,你可以试试这个:

DECLARE @BinaryNumber CHAR(8)
SET @BinaryNumber = '10100101'
INSERT INTO Table1
SELECT  CAST(SUBSTRING(@BinaryNumber,8,1)+
             SUBSTRING(@BinaryNumber,7,1)*2+
             SUBSTRING(@BinaryNumber,6,1)*4+
             SUBSTRING(@BinaryNumber,5,1)*8+
             SUBSTRING(@BinaryNumber,4,1)*16+
             SUBSTRING(@BinaryNumber,3,1)*32+
             SUBSTRING(@BinaryNumber,2,1)*64+
             SUBSTRING(@BinaryNumber,1,1)*128 AS BINARY(1))
于 2013-02-14T18:57:28.090 回答
0

我没有在 SQL Server 上工作过,但我认为你需要类似的东西

INSERT INTO Table1 VALUES( CAST(10100101  AS BINARY(1)) );

更多信息在这里
http://msdn.microsoft.com/en-us/library/ms188362.aspx

于 2013-02-14T18:39:32.000 回答