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

【MySQL】SELECT文で別のカラムに特定の文字列が含まれる場合にTRUE/FALSEを返す方法

MySQLのSELECT文で、別のカラム(フィールド)に特定の文字列が含まれているかどうかに応じてTRUEまたはFALSE(Yes/No)を返したい場合は、IF()関数を使用します。この記事では、実際にテーブルを作成しながら具体的な使い方を解説します。

1. サンプルテーブルを作成する

まず、「DemoTable」という名前のテーブルを、FirstName と LastName の2つのカラムで作成します。

mysql> create table DemoTable
(
    FirstName varchar(100),
    LastName varchar(100)
);
Query OK, 0 rows affected (1.28 sec)

2. レコードを挿入する

INSERT文を使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable values('Chris','Brown');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('David','Miller');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Adam','Smith');
Query OK, 1 row affected (0.11 sec)

3. テーブルの内容を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Chris     | Brown    |
| David     | Miller   |
| Adam      | Smith    |
+-----------+----------+
3 rows in set (0.00 sec)

4. IF()関数で文字列の一致を判定する

以下のクエリでは、LastName カラムの値が「Miller」に一致するかどうかを判定し、一致すれば「Yes」、一致しなければ「No」を返します。

mysql> select if(LastName='Miller','Yes','No') AS LastName,FirstName from DemoTable;

実行結果:

+----------+-----------+
| LastName | FirstName |
+----------+-----------+
| No       | Chris     |
| Yes      | David     |
| No       | Adam      |
+----------+-----------+
3 rows in set (0.00 sec)

このように、Davidの行だけ「Yes」が返され、それ以外の行は「No」が返されていることがわかります。

補足:部分一致で判定したい場合

上記の例は完全一致での判定ですが、特定の文字列を含むかどうか(部分一致)で判定したい場合は、LIKE演算子やINSTR()関数と組み合わせます。例えば、以下のように書けば「Mill」という文字列を含むレコードを判定できます。

mysql> select if(LastName LIKE '%Mill%','Yes','No') AS Result,FirstName from DemoTable;

また、より複雑な分岐が必要な場合は、CASE式を使うという選択肢もあります。

mysql> select CASE WHEN LastName='Miller' THEN 'Yes' ELSE 'No' END AS Result,
    -> FirstName from DemoTable;

まとめ

IF(条件, 真の場合の値, 偽の場合の値) の形式を使えば、SELECT文の中で別のカラムの値に応じた判定結果を簡単に取得できます。データのフラグ判定やレポート出力など、日常的なクエリで very 役立つテクニックなので、ぜひ活用してください。

  1. MySQLでTRUE/FALSEのレコードを0/1として表示する方法

    MySQLでTRUE/FALSEのレコードを0/1として表示する方法MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。1. テーブルの作成まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。mysql> create table DemoTable2035     -> (    

  2. Pythonで文字列が10進数字のみで構成されているか判定する方法

    Pythonでは、文字列が10進数字(0〜9)だけで構成されているかどうかを確認する方法がいくつかあります。ここでは、代表的な3つの方法を紹介します。 1. isdigit()メソッドを使う 最もシンプルな方法は、文字列クラスに組み込まれている isdigit() メソッドを使うことです。このメソッドは、文字列内のすべての文字が数字であり、かつ少なくとも1文字以上存在する場合に True を返し、それ以外の場合は False を返します。 >>> 12345.isdigit() True >>> 12345a.isdigit() False ただし、isd