2014-11-06 56 views
1

我需要一个可以设置多个值的字段。我不想继续使用mysql集。我可以做的另一方面是说我有多个类别。Mysql选择特定位设置为整数的行

猫1,猫2,猫3 ....等。限于约20类。假设它们为1(00001),2(00010),4(00100)等等。

如果我的帖子在'猫1'中,我会在帖子表字段中添加1(00001)的值,它是TINYINT。 如果我的帖子在'猫1'和'猫2'中,我会在TINYINT字段中添加3(00011)的值。

现在我想要得到'猫1'的所有帖子,我想查询像字段='**** 1',即只是为了检查是否最后一位是。

再举一个例子。假设我的帖子在“猫2”和“猫3”中,我会添加值6(00111)。现在我想获得所有'猫2'的帖子。我想查询哪里field ='*** 1 *'。

作为上面的例子,我想知道如何查询基于哪个位上的整数字段?

回答

1

年没有玩过位串(用于在大型机中存储大量信息的地狱)。

但是你应该可以使用位算术。例如,要检查第2位是: -

SELECT * 
FROM sometable 
WHERE bit_field & 2 = 2 

或检查的第2位是和第1位是关闭: -

SELECT * 
FROM sometable 
WHERE bit_field & 3 = 2 

很少的细节在这里: -

http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html

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_; 
+0

为什么嵌套MODs?你可以拿最后一个,对吧? – harold 2014-11-06 17:20:45