Логический тип

QHB предоставляет стандартный SQL-тип boolean (логический); см. таблицу 19. Тип boolean может иметь несколько состояний: «true» (истина), «false» (ложь) и третье состояние «unknown» (неизвестно), которое представляется SQL-значением NULL.

Таблица 19. Логический тип данных

ИмяРазмерОписание
boolean1 байтсостояние: истина или ложь

Логические константы могут представляться в запросах SQL ключевыми словами SQL: TRUE, FALSE и NULL.

Функция ввода данных типа boolean принимает следующие строковые представления для состояния «true»:

true
yes
on
1

и следующие представления для состояния «false»:

false
no
off
0

Также допускаются уникальные префиксы этих строк, например t или n. Начальные или конечные пробелы игнорируются, а регистр символов не имеет значения.

Функция вывода данных типа boolean всегда выдает t или f, как показано в примере 2.

Пример 2. Использование типа boolean

CREATE TABLE test1 (a boolean, b text);
INSERT INTO test1 VALUES (TRUE, 'sic est');
INSERT INTO test1 VALUES (FALSE, 'non est');
SELECT * FROM test1;
 a |    b
---+---------
 t | sic est
 f | non est

SELECT * FROM test1 WHERE a;
 a |    b
---+---------
 t | sic est

Ключевые слова TRUE и FALSE являются предпочтительным (SQL-совместимым) способом записи логических констант в запросах SQL. Но также можно использовать строковые представления, следуя общему синтаксису строковой литеральной константы, описанному в разделе Константы других типов, например, 'yes'::boolean.

Обратите внимание, что синтаксический анализатор автоматически понимает, что TRUE и FALSE относятся к типу boolean, но для NULL это не так, потому что ему может соответствовать любой тип. Поэтому в некоторых контекстах вам, возможно, придется явным образом привести NULL к типу boolean, например NULL::boolean. И, наоборот, приведение можно исключить из строково-литерального логического значения в тех контекстах, где анализатор может сделать вывод, что литерал должен иметь тип boolean.