mySQL中的按位操作

问题描述 投票:0回答:2

我需要帮助解决问题。我有一个具有Bitmask-Value的用户,比方说10010001。列名称为value_1。在此列中,我具有与以下值进行比较的值:

|--|----------|  
|id|   value_1|
|--|----------|
| 1| 00000001 |
| 2| 10010001 | 
| 3| 00000010 | 
| 4| 10000001 |
| 5| 10011001 |
|--|----------|  

我的查询是这个:

select value_1 from testdb
where b'10010001' & value_1;

我的结果是ID 1,2,4,5看起来不错-但由于位4不在源代码中,我如何排除ID 5?

mysql bitwise-operators
2个回答
0
投票

假设您的value_1数据类型为字符串尝试使用适当的投射

    select value_1 from testdb
    where cast( '10010001' as unsigned )  & cast( value_1 as unsigned ) ;

0
投票

将结果比较为正值,而不是将其命名为高于源(掩码为数字),将确保按掩码值排除在掩码上方的value_1值。按位和已排除下面的那些。

WHERE b'10010001' & value_1 BETWEEN 1 AND 10010001
© www.soinside.com 2019 - 2024. All rights reserved.