[英]Bitwise MySQL NAND query
我有一个整数表,我想选择所有整数,如果转换为二进制,则不会同时设置位1和2。
或者,对于另一个未同时设置第3位和第4位的查询。
例如,在具有列名decvalue的表中,值...
4 7 11 12 13 18 20 27
第一个选择的结果为4、12和20,第二个选择的结果为18。
我不知道从哪里开始,我尝试过...
foreach($db->query('SELECT id, lineid, decvalue, dateupdated FROM trialtable WHERE decvalue 1!&2 ORDER BY id ASC') as $record)
{
id=$record['id'];
$dateupdated=$record['dateupdated'];
$decvalue=$record['decvalue'];
echo $dateupdated." decvalue<br>";
}
谢谢并恭祝安康,
格雷厄姆
CREATE TABLE t
(`id` int)
;
INSERT INTO t
(`id`)
VALUES
(4),
(7),
(11),
(12),
(13),
(18),
(20),
(27)
;
select id, bin(id)
from t;
| ID | BIN(ID) |
|----|---------|
| 4 | 100 |
| 7 | 111 |
| 11 | 1011 |
| 12 | 1100 |
| 13 | 1101 |
| 18 | 10010 |
| 20 | 10100 |
| 27 | 11011 |
select
id,
bin(id)
from t
where not(id & 1) = 1
and not(id & 2) = 2;
| ID | BIN(ID) |
|----|---------|
| 4 | 100 |
| 12 | 1100 |
| 20 | 10100 |
select
id,
bin(id)
from t
where not(id & 4) = 4
and not(id & 8) = 8;
| ID | BIN(ID) |
|----|---------|
| 18 | 10010 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.