MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのIN()句でカンマ区切りの文字列を使う方法

MySQLのIN()句にカンマ区切りの文字列を設定するには、以下の構文のように値を1つの文字列として指定します。

select *from yourTableName where yourColumnName IN('yourCommaSeparatedValue');

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable1314
-> (
-> Number varchar(100)
-> );
Query OK, 0 rows affected (0.53 sec)

レコードの挿入

insertコマンドを使って、カンマ区切りの値を持つレコードをいくつか登録します。

mysql> insert into DemoTable1314 values('45,67,89');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1314 values('10,20,50');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1314 values('90,56,45');
Query OK, 1 row affected (0.23 sec)

登録済みレコードの確認

select文ですべてのレコードを表示して確認してみます。

mysql> select *from DemoTable1314;

出力結果

+----------+
| Number |
+----------+
| 45,67,89 |
| 10,20,50 |
| 90,56,45 |
+----------+
3 rows in set (0.00 sec)

IN()句でカンマ区切りの文字列を検索する

以下が、MySQLのIN()句でカンマ区切りの文字列を使用するクエリです。ポイントは、カラムNumberには「10,20,50」という1つの文字列が丸ごと格納されており、IN()に渡す値も同じ形式の完全な文字列であるため、文字列同士が一致して該当レコードが抽出されるという点です。

mysql> select *from DemoTable1314 where Number IN('10,20,50');

出力結果

+----------+
| Number |
+----------+
| 10,20,50 |
+----------+
1 row in set (0.02 sec)

なお、カンマ区切りの値の一部だけ(例:「20」のみ)を検索したい場合は、FIND_IN_SET関数を使う方法もあります。
記述例:select *from DemoTable1314 where FIND_IN_SET('20', Number);

  1. MySQLで@記号を使う方法!ユーザー定義変数の基本と実例をわかりやすく解説

    MySQLで@記号を使用するには、SETコマンドを利用します。@記号は、セッション内で有効なユーザー定義変数を設定する際に使われる記号です。変数に値を格納しておけば、後続のクエリ内でその値を何度でも再利用できるため、条件の共通化や一時的な値の保持に非常に便利です。 @記号によるユーザー定義変数の基本構文 ユーザー定義変数を設定する基本的な構文は以下のとおりです。 SET @anyVariableName := yourValue; :=は代入演算子で、右側の値を左側の変数に代入します。これにより、以降のSQL文の中で@anyVariableNameを参照できるようになります。 サンプルテーブル

  2. MySQLで数値文字列に比較演算子を使用する方法をわかりやすく解説

    MySQLで数値文字列を比較するには?MySQLでは、「5-9」や「2-4」のようなハイフン区切りの数値文字列をそのまま比較することはできません。そんなときは、substring()関数とinstr()関数、さらにCASTを組み合わせることで、文字列から数値部分を取り出して比較演算子を使えるようになります。この記事では、実際にテーブルを作成しながら、数値文字列に対して比較演算を行う方法を順番に解説していきます。1. サンプルテーブルを作成するまずは、ユーザーIDと教育期間のギャップ(数値文字列)を格納するテーブルを作成しましょう。mysql> create table DemoTable