我正在尝试通过长度为9的charfield选择行。它位于utf8_gen归类中。

我的条件是存储值的前n位必须与给定的位掩码匹配。

一个例子:

data:

id  | val | bitmask (not actually stored in the db)
----+-----+-----------------------------------------
 1  | AB  | 0100000101 000010
 2  | Ab  | 0100000101 100010

bitmask for where-clause:

0100000101 0

expected selected rows:

 1  | AB

最佳答案

我能拿出最好的。真丑。无法保证其运行速度或效果。

SELECT HEX(b'0100000101'<< BIT_LENGTH(myCol) - 10) & HEX(myCol) = HEX(b'0100000101'<< BIT_LENGTH(myCol) - 10);


myCol是上校。

关于mysql - 比较char字段和位掩码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26102031/

10-11 02:54