정규식(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)
위의 출력에서 볼 수 있듯이 동일한 결과를 얻고 있습니다.