MySQL LIKE を MySQL IN として実装するためのクエリ?
MySQL IN() のようなクエリを実装するには、COUNT()、IF() を LIKE 演算子とともに使用する必要があります。まずテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Subject varchar(80)
-> );
Query OK, 0 rows affected (0.58 sec)
insert コマンドを使用してテーブルにいくつかのレコードを挿入します。
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)