Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL은 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)

IN()처럼 작동하는 regexp를 사용하십시오. 내가 처음에 논의한 위의 구문을 적용할 수 있습니다. 쿼리는 다음과 같습니다 -

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)

위의 출력에서 ​​볼 수 있듯이 동일한 결과를 얻고 있습니다.