MySQL LIKE IN()


你也可以通过正则表达式(regexp)来实现 MySQL Like IN()。语法如下 -

select *from yourTableName where yourColumName regexp ‘value1|value2|value3……|valueN’;

为了理解以上逻辑,你需要创建一个表。我们先创建一个表 -

mysql> create table INDemo
   -> (
   -> Id int,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (0.90 sec)

将一些记录插入表中。查询如下 -

mysql> insert into INDemo values(100,'John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into INDemo values(104,'Carol');
Query OK, 1 row affected (0.18 sec)
mysql> insert into INDemo values(108,'David');
Query OK, 1 row affected (0.19 sec)
mysql> insert into INDemo values(112,'Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into INDemo values(116,'Johnson');
Query OK, 1 row affected (0.17 sec)
mysql> insert into INDemo values(120,'Sam');
Query OK, 1 row affected (0.16 sec)

现在我们可以通过 SELECT 语句来显示所有记录。查询如下 -

mysql> select *from INDemo;

以下是输出 -

+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |  
| 104  | Carol   |
| 108  | David   |
| 112  | Smith   |
| 116  | Johnson |
| 120  | Sam     |
+------+---------+
6 rows in set (0.00 sec)

使用 regexp,其功能类似于 IN()。你可以使用我在开头讨论过的上述语法。查询如下 -

mysql> select *from INDemo where Id regexp '112|116|100';

以下是输出 -

+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 112  | Smith   |
| 116  | Johnson |
+------+---------+
3 rows in set (0.21 sec)

你会得到与 IN() 相同的输出。现在,让我们通过 IN() 检查一下。查询如下 -

mysql> select *from INDemo where Id IN(112,116,100);

以下是输出

+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 112  | Smith   |
| 116  | Johnson |
+------+---------+
3 rows in set (0.00 sec)

正如你在以上输出中看到的,我们得到了相同的结果。

更新于: 2019 年 7 月 30 日

2K+ 浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告