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

正の値を持つ行に対してTRUEを返すMySQLクエリの書き方

MySQLで正の値を持つ行に対してTRUE(1)を返し、負の値に対してはFALSE(0)を返したい場合は、IF()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、具体的なクエリの書き方を解説します。

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

まず、CREATE TABLE文を使ってテーブルを作成します。

mysql> create table DemoTable2038
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Value int
    -> );
Query OK, 0 rows affected (0.87 sec)

IdカラムはAUTO_INCREMENT付きの主キーとし、Valueカラムに判定対象となる整数値を格納します。

2. テストデータを挿入する

INSERTコマンドで、正の値と負の値が混在したレコードを挿入していきます。

mysql> insert into DemoTable2038(Value) values(57);
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable2038(Value) values(-100);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable2038(Value) values(-78);
Query OK, 1 row affected (0.42 sec)

mysql> insert into DemoTable2038(Value) values(78);
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable2038(Value) values(91);
Query OK, 1 row affected (0.09 sec)

mysql> insert into DemoTable2038(Value) values(-34);
Query OK, 1 row affected (0.14 sec)

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

mysql> select *from DemoTable2038;

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

+----+-------+
| Id | Value |
+----+-------+
| 1  | 57    |
| 2  | -100  |
| 3  | -78   |
| 4  | 78    |
| 5  | 91    |
| 6  | -34   |
+----+-------+
6 rows in set (0.00 sec)

3. IF()関数で正负の判定を行う

ここからが本題です。正の値を持つ行に対してTRUEを返すクエリは、以下のように記述します。

mysql> select *,if(Value > 0,true,false) as Result from DemoTable2038;

IF()関数は「条件式, 真の場合の値, 偽の場合の値」という形式で指定します。ここでは「Value > 0」が条件となり、正の値ならtrue(1)、そうでなければfalse(0)がResult列に出力されます。

実行結果は次のようになります。

+----+-------+--------+
| Id | Value | Result |
+----+-------+--------+
| 1  | 57    | 1      |
| 2  | -100  | 0      |
| 3  | -78   | 0      |
| 4  | 78    | 1      |
| 5  | 91    | 1      |
| 6  | -34   | 0      |
+----+-------+--------+
6 rows in set (0.00 sec)

まとめ

MySQLでは、if(Value > 0, true, false)のようにIF()関数をSELECT句に組み込むだけで、数値が正か負かを簡単に判定できます。MySQLではブール値が内部的に1/0の整数として扱われるため、結果列にはTRUEが「1」、FALSEが「0」で表示される点に注意してください。CASE式を使った方法や、SIGN()関数との組み合わせなども応用として活用できるので、状況に応じて使い分けるとよいでしょう。

  1. MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説

    MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query

  2. MySQLでLIKEをIN()のように実装するクエリの書き方

    MySQLのIN()のような動作を実現するには、LIKE演算子と組み合わせてCOUNT()関数やIF()関数を使用します。この記事では、具体的な手順をサンプルコード付きで解説します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable    -> (    -> Subject varchar(80)    -> );Query OK, 0 rows affected (0.58 sec)