BOOLEAN
Описание
BOOLEAN (псевдоним: BOOL) — это тип данных в Doris, представляющий логические значения true и false.
Внутри BOOLEAN хранится как значение uint8, где 0 обозначает false, а 1 обозначает true.
В отличие от MySQL, где BOOLEAN является псевдонимом TINYINT(1), Doris рассматривает BOOLEAN как отдельный тип данных, аналогично PostgreSQL, Oracle и другим системам баз данных.
Диапазон значений
BOOLEAN может принимать только следующие значения:
true(при выводе отображается как 1)false(при выводе отображается как 0)
В памяти значения типа BOOLEAN могут быть только 0 или 1; другие значения невозможны.
Литералы
В Doris для записи логических литералов можно использовать ключевые слова true и false (без учёта регистра):
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).
Преобразование типов
Следует учитывать, что в Doris BOOLEAN не эквивалентен TINYINT, хотя из-за соглашений MySQL они могут казаться похожими.
При вставке логического литерала в столбец TINYINT выполняется неявное преобразование типа:
CREATE TABLE test_boolean(
u8 TINYINT
)
properties("replication_num" = "1");
mysql> insert into test_boolean values(true);
В этом примере логический литерал true преобразуется в значение типа TINYINT.
Ключевые слова
BOOL, BOOLEAN