繁体   English   中英

按位MySQL NAND查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM