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

MySQL LIKE를 MySQL IN으로 구현하기 위한 쿼리?


MySQL IN()과 같은 쿼리를 구현하려면 LIKE 연산자와 함께 COUNT(), IF()를 사용해야 합니다. 먼저 테이블을 생성하겠습니다 -

mysql> create table DemoTable
   -> (
   -> Subject varchar(80)
   -> );
Query OK, 0 rows affected (0.58 sec)

삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -

mysql> insert into DemoTable values('MySQLMongoDB');
Query OK, 1 row affected (0.86 sec)
mysql> insert into DemoTable values('MySQL');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('JavaMySQL');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('MongoDB');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('Java');
Query OK, 1 row affected (0.19 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select *from DemoTable;

이렇게 하면 다음 출력이 생성됩니다 -

+--------------+
| Subject      |
+--------------+
| MySQLMongoDB |
| MySQL        |
| JavaMySQL    |
| MongoDB      |
| Java         |
+--------------+
5 rows in set (0.00 sec)

다음은 LIKE를 IN() −

로 구현하는 쿼리입니다.
mysql> select
   -> count(if(Subject like '%MySQL%',1,NULL)) as MySQLCount,
   -> count(if(Subject like '%Java%',1,NULL)) as JavaCount,
   -> count(if(Subject like '%MongoDB%',1,NULL)) as MongoDBCount
   -> from DemoTable;

이것은 다음과 같은 출력을 생성합니다 -

+------------+-----------+--------------+
| MySQLCount | JavaCount | MongoDBCount |
+------------+-----------+--------------+
|          3 |         2 |            2 |
+------------+-----------+--------------+
1 row in set (0.00 sec)