【发布时间】:2018-04-03 18:06:15
【问题描述】:
我正在使用 SQl 数据库
我有一个列数据类型为 Blob 的表。
for e.g:
create table Alarm(
id int,
xyz blob
);
这是我的插入语句:
插入警报值(2, '1000001');
INSERT INTO 警报值(5, '0001000');
INSERT INTO 警报值(7, '0110110');
这是我的 SELECT 语句
SELECT * from Alarm where xyz & cast('1001001' as blob);
当我使用 按位与 运算时,它会返回表中的所有记录。 但在这种情况下,应该选择记录 1 和 2。
select 语句返回所有错误的记录。
请帮帮我。
【问题讨论】:
-
我不知道你是否可以用 BLOB 做你正在尝试的事情,但是......你记得将
1001001标记为二进制常量吗?如上所用,它将被视为十进制的 1,001,001;如果进行按位与,将匹配所有记录的二进制扩展。 -
select * from Alarm where Alarm.bt_str & cast(1001001 as Binary);我已经尝试过了,但它仍然返回所有记录。请帮帮我
-
1001001仍将被视为十进制数(一百万、一千零一)。此外,B'0001000'在我所知道的 SQLite 中没有任何意义,因此请编辑您正在使用的实际INSERT和SELECT语句的问题示例。 -
我已对我的问题进行了更改。我可以使用 Blob 数据类型来存储按位字符串,以便我可以在其中执行按位 AND 运算符吗?
-
那些不是 blob。编辑您正在使用的实际 INSERT 和 SELECT 语句的问题示例。
标签: sql sqlite blob bitwise-and