我在数据库表中有一个列,其数据格式如下“000011”和SQL查询,如:
SELECT *
FROM table
WHERE a = 000010 OR a = 000001 or a = 000011
但如果值为111111.它会有很多OR条件。 如果像001(3位)那样的数据格式可以使用通配符(_)来执行此操作,但是在尝试使用它时(例如6位数)我会被卡住。
请帮我找其他方法?
答案 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)