代码之家  ›  专栏  ›  技术社区  ›  JYelton Melchior Blausand

如何比较mysql中表示二进制掩码的两个字符串(AND)?

  •  0
  • JYelton Melchior Blausand  · 技术社区  · 14 年前

    我在mysql中有一个表,它(在其他列中)将位掩码存储为字符串,例如:

    000100

    AND 这些字段一起提供一个结果,显示任何两个遮罩位置何时 是的。

    例如,考虑以下三个示例记录:

    id  name  mask
    ==  ====  ====
    11  a     000100
    12  a     000110
    13  a     010000
    

    name

    11 12 (第四位是 1 在这两种情况下)。

    我遇到的问题是执行 在面具上。因为它是以字符串形式存储的,所以我不确定如何让mysql将其作为二进制值来处理。

    1 回复  |  直到 14 年前
        1
  •  3
  •   a'r    14 年前

    conv 例如。

    select conv('1100', 2, 10) & conv('0110', 2, 10);
    

    mysql> select conv('1001', 2, 10) & conv('0110', 2, 10) = 0;
    +-----------------------------------------------+
    | conv('1001', 2, 10) & conv('0110', 2, 10) = 0 |
    +-----------------------------------------------+
    |                                             1 |
    +-----------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> select conv('1001', 2, 10) & conv('0111', 2, 10) = 0;
    +-----------------------------------------------+
    | conv('1001', 2, 10) & conv('0111', 2, 10) = 0 |
    +-----------------------------------------------+
    |                                             0 |
    +-----------------------------------------------+
    1 row in set (0.00 sec)