SQL LIKE和OR条件,

时间:2017-04-10 12:30:58

标签: mysql sql

我在数据库表中有一个列,其数据格式如下“000011”和SQL查询,如:

SELECT *
FROM table
WHERE a = 000010 OR a = 000001 or a = 000011 

但如果值为111111.它会有很多OR条件。 如果像001(3位)那样的数据格式可以使用通配符(_)来执行此操作,但是在尝试使用它时(例如6位数)我会被卡住。

请帮我找其他方法?

4 个答案:

答案 0 :(得分:1)

首先,您可以使用in

SELECT *
FROM table
WHERE a in (000010, 000001, 000011)

但是,我怀疑你的“数据”实际上是一个整数,你想要boolean&或者|:

WHERE (a & 000011)

答案 1 :(得分:0)

如果要显示包含1的数据,请使用LIKE

SELECT *
FROM table
WHERE a LIKE '%1%'

答案 2 :(得分:0)

SELECT *
FROM table
WHERE position('1' in a) > 0

答案 3 :(得分:0)

根据我的理解,您希望找到二进制表示小于输入的所有行。如果是这种情况,您可以使用BINARY函数来获得所需的结果:

mysql> create table bintab (a varchar(10));
Query OK, 0 rows affected (0.07 sec)

mysql> insert into bintab values('000001');
Query OK, 1 row affected (0.04 sec)

mysql> insert into bintab values('000010');
Query OK, 1 row affected (0.01 sec)

mysql> insert into bintab values('000011');
Query OK, 1 row affected (0.01 sec)

mysql> insert into bintab values('000100');
Query OK, 1 row affected (0.00 sec)

mysql> insert into bintab values('000101');
Query OK, 1 row affected (0.00 sec)

mysql> insert into bintab values('000110');
Query OK, 1 row affected (0.01 sec)

mysql> insert into bintab values('000111');
Query OK, 1 row affected (0.00 sec)

mysql> select * from bintab where binary(a) < binary('000100');
+--------+
| a      |
+--------+
| 000001 |
| 000010 |
| 000011 |
+--------+
3 rows in set (0.00 sec)