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

MySQLでブール値を1(正)または-1(負)に変換する方法

MySQLでは、ブール型(BOOLEAN)のデータは内部的に整数の「0」または「1」として扱われます。このブール値を「1」(正の符号)または「-1」(負の符号)に変換したい場合は、IF()関数を使用すると簡単に実現できます。

基本構文

以下が変換のための基本的な構文です。

select if(yourColumnName,1,-1) from yourTableName;

IF()関数は、第1引数の条件がTRUEの場合に第2引数の値を、FALSEの場合に第3引数の値を返します。つまり、ブール値がTRUE(1)なら「1」を、FALSE(0)なら「-1」を返す仕組みです。

実際の使用例

1. テーブルの作成

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    isMarried boolean
);
Query OK, 0 rows affected (0.60 sec)

2. レコードの挿入

INSERTコマンドを使って、いくつかのレコードを挿入します。

mysql> insert into DemoTable values(true);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(false);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(false);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(true);
Query OK, 1 row affected (0.36 sec)

3. テーブル内の全レコードを確認

SELECT文でテーブル内のすべてのレコードを表示してみます。

mysql> select *from DemoTable;

このクエリを実行すると、次のような出力が得られます。

+-----------+
| isMarried |
+-----------+
|         1 |
|         0 |
|         0 |
|         1 |
+-----------+
4 rows in set (0.00 sec)

ブール値を1または-1に変換するクエリ

ここからが本題です。以下のクエリで、ブール値を正または負の符号に変換できます。ここでは、ブール値がFALSE(0)の場合に「-1」を返すように設定しています。

mysql> select if(isMarried,1,-1) from DemoTable;

実行結果は以下の通りです。TRUEのレコードには「1」、FALSEのレコードには「-1」が割り当てられていることがわかります。

+--------------------+
| if(isMarried,1,-1) |
+--------------------+
|                  1 |
|                 -1 |
|                 -1 |
|                  1 |
+--------------------+
4 rows in set (0.00 sec)

補足:CASE式を使った代替方法

IF()関数以外にも、CASE式を使って同様の変換を行うことができます。

mysql> select case when isMarried then 1 else -1 end as signValue from DemoTable;

どちらの方法でも同じ結果が得られますが、より複雑な条件分岐が必要なケースでは、CASE式の方が柔軟に対応できるため覚えておくと便利です。

  1. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用

  2. 【初心者向け】MySQLオプションの基本!値の指定方法と「=」記号のルールを解説

    本記事では、MySQLにおけるオプションのデフォルト動作、値を必要とするオプション、そして「=」(イコール)記号の扱いについて詳しく解説します。 値を指定するオプションの基本的な書き方 慣例として、値を設定する形式のロングオプションは「=」記号を使って記述します。以下のように書くのが一般的です。 mysql --host=tonfisk --user=jon 一方、値が必須となるオプション(デフォルト値を持たないオプション)については、「=」記号は必須ではありません。つまり、スペース区切りで次のように書いても正しく動作します。 mysql --host tonfisk --user jon