我已经尝试了一段时间,但没有找到任何东西,但是如果真的很抱歉,我深表歉意。

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

目前,我将其转换为字符串,例如"10100101",并创建一个类似于"INSERT INTO Table1 VALUES('10100101');"的查询字符串。一直在尝试获取与SELECT等效的"SELECT * FROM Table1 WHERE bin_val=10100101;"语句。

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

有什么建议么?

p.s用Java编写代码

最佳答案

首先,您需要将基于二进制的数字转换为基于十进制的数字。然后,您可以简单地将该值转换为数据类型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))

10-08 14:44