gpt4 book ai didi

php - 状态位标志。查找一个标志 = 0 的状态

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:54 25 4
gpt4 key购买 nike

假设我在状态中有三位标志,作为整数存储在 mysql 中

Approved    Has Result    Finished
0|1 0|1 0|1

现在我想查找状态为:Finished = 1、Has Result = 1 和 Approved = 0 的行。

然后是数据:

0 "000"
1 "001"
3 "011"
7 "111"

应该产生

false
false
true
false

我可以做类似的事情吗? (在 mysql 中)

status & "011" AND ~((bool) status & "100")

不太明白如何查询“Approved = 0”。

或者我应该完全放弃使用位标志,并将它们分成单独的列吗?

使用位标志的部分原因是为了 mysql 性能。

最佳答案

使用整数而不是二进制文本。使用 3 而不是 011

获取批准的行:

SELECT
*
FROM
`foo`
WHERE
(`status` & 4)

或批准和完成的行:

SELECT
*
FROM
`foo`
WHERE
(`status` & 5)

或完成但未被接受:

SELECT
*
FROM
`foo`
WHERE
(`status` & 1)
AND
(`status` ^ 4)

Finished = 1, Has Result = 1 and Approved = 0”可以像 status = 3 一样简单。

关于php - 状态位标志。查找一个标志 = 0 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com