我需要一个可以设置多个值的字段。我不想继续使用mysql集。我可以做的另一种方式是说我有多个类别。
猫1,猫2,猫3 ......等。限于约20个类别。假设它们为1(00001),2(00010),4(00100)......等等。
如果我的帖子在'cat 1'中,我会在帖子表字段中添加值1(00001),即TINYINT。 如果我在'cat 1'和'cat 2'中发帖,我会在TINYINT字段中添加值3(00011)。
现在我想得到'cat 1'中我想查询的所有帖子,如field ='**** 1',即只是检查最后一位是否开启。
又一个例子。说我的帖子在'cat 2'和'cat 3',我会添加值6(00111)。现在我想得到'cat 2'中的所有帖子。我想查询where ='*** 1 *'。
如上所述,我想知道如何根据哪个位查询整数字段?
答案 0 :(得分:2)
多年来没有使用位串(用于在大型机时代内存储大量信息)。
但是你应该可以使用位算术。例如,检查第二位是否打开: -
SELECT *
FROM sometable
WHERE bit_field & 2 = 2
或者检查第2位是否打开且第1位是否关闭: -
SELECT *
FROM sometable
WHERE bit_field & 3 = 2
这里的细节很少: -
答案 1 :(得分:0)
SELECT CONV(15,10,2);
或
SET @SAYI = 86;
SELECT
@SAYI SAYI,
CONCAT(
TRUNCATE(@SAYI/64,0),
TRUNCATE(MOD(@SAYI,64)/32,0),
TRUNCATE(MOD(MOD(@SAYI,64),32)/16,0),
TRUNCATE(MOD(MOD(MOD(@SAYI,64),32),16)/8,0),
TRUNCATE(MOD(MOD(MOD(MOD(@SAYI,64),32),16),8)/4,0),
TRUNCATE(MOD(MOD(MOD(MOD(MOD(@SAYI,64),32),16),8),4)/2,0),
TRUNCATE(MOD(MOD(MOD(MOD(MOD(MOD(@SAYI,64),32),16),8),4),2)/1,0)
) AS BINARY_;