正の値を持つ行に対して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()関数との組み合わせなども応用として活用できるので、状況に応じて使い分けるとよいでしょう。
-
MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説
MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query
-
MySQLでLIKEをIN()のように実装するクエリの書き方
MySQLのIN()のような動作を実現するには、LIKE演算子と組み合わせてCOUNT()関数やIF()関数を使用します。この記事では、具体的な手順をサンプルコード付きで解説します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Subject varchar(80) -> );Query OK, 0 rows affected (0.58 sec)