我尝试用谷歌搜索一段时间,但找不到任何东西,但如果这确实很明显,我深表歉意。
我有一个长度始终为 8 的 boolean 数组,我想将相应的二进制值插入到 binary(1)
字段中。我使用的是 SQL Server 2012。
目前,我将其转换为字符串,例如 "10100101"
,并创建一个类似于 "INSERT INTO Table1 VALUES('10100101');"的查询字符串
还一直在尝试获得相当于 "SELECT * FROM Table1 WHERE bin_val=10100101;"
SELECT
语句
当我执行该语句时,我总是遇到语法错误。我尝试了多种变体(例如带/不带引号等,并将数字设置为不同的格式,例如 "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))
关于java - 如何在 SQL Server 2012 中查询或插入值到二进制(1)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881588/