メインコンテンツまでスキップ

BOOLEAN

説明

BOOLEAN(別名:BOOL)は、ブール値(true と false)を表すDorisのデータ型です。

内部的に、BOOLEANはuint8値として格納され、0はfalseを表し、1はtrueを表します。

BOOLEANがTINYINT(1)の別名であるMySQLとは異なり、DorisはPostgreSQL、Oracle、その他のデータベースシステムと同様に、BOOLEANを独立したデータ型として扱います。

値の範囲

BOOLEAN値は以下のみ可能です:

  • true(表示時は1として表現)
  • false(表示時は0として表現)

メモリ内では、BOOLEAN型は0または1としてのみ存在し、他の値は取り得ません。

リテラル値

Dorisでは、キーワードtruefalse(大文字小文字を区別しない)を使用してブールリテラル値を表すことができます:

mysql> select TrUe, False, true;
+------+-------+------+
| TrUe | False | true |
+------+-------+------+
| 1 | 0 | 1 |
+------+-------+------+

サポートされる操作

論理演算

BOOLEAN型は、AND、OR、NOT、XORなどの論理演算をサポートしています:

mysql> select true AND false, true OR false, NOT true, true XOR false;
+----------------+---------------+----------+----------------+
| true AND false | true OR false | NOT true | true XOR false |
+----------------+---------------+----------+----------------+
| 0 | 1 | 0 | 1 |
+----------------+---------------+----------+----------------+

算術演算

BOOLEANは算術演算を直接サポートしていませんが、true + trueのような式は暗黙的な型変換により動作します:

mysql> select true + true;
+-------------+
| true + true |
+-------------+
| 2 |
+-------------+

これは、ブール値が暗黙的にSMALLINTにキャストされるため動作します:CAST(TRUE AS smallint) + CAST(TRUE AS smallint)

型変換

BOOLEANはDorisにおいてTINYINTと等価ではないことに注意することが重要です。MySQLの慣習により似ているように見える場合でも同様です。

ブールリテラルをTINYINTカラムに挿入する際、暗黙的な型変換が発生します:

CREATE TABLE test_boolean(
u8 TINYINT
)
properties("replication_num" = "1");

mysql> insert into test_boolean values(true);

この例では、ブール値リテラルtrueがTINYINT値に変換されます。

キーワード

BOOL, BOOLEAN