我已经尝试了一段时间,但没有找到任何东西,但是如果真的很抱歉,我深表歉意。
我有一个始终为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))