Иллюстрированный самоучитель по PostgreSQL

Типы данных

Логические значения

Логическим значением называется простая структура данных, представляющая одну из двух величин: true или false. В PostgreSQL поддерживается тип данных boo! ean, определенный в стандарте SQL99, с нестандартным синонимом bool.

Логическим переменным, как и другим типам данных, может присваиваться значение NULL, Логическая переменная, равная NULL, никогда не интерпретируется как true или false; она интерпретируется только как NULL. Если вы хотите проверить, равна ли логическая переменная псевдозначению NULL, не пытайтесь сравнивать ее с false, это бессмысленно. Для этой цели следует использовать конструкцию IS NULL. Способность логической переменной принимать значения true, false и NULL (и правила, в соответствии с которыми NULL считается отличным от этих двух величин) называется тройственной логикой.

В табл. 3.11 приведены допустимые обозначения логических констант, правильно опознаваемые PostgreSQL. Выбор обозначений является делом вкуса. Все разновидности значения true, как и все разновидности значения fal se, интерпретируются сервером одинаково.

Таблица 3.11. Логические константы.

True False
true false
't' Т
'true' 'false'
'У' 'n'
'yes' 'no'
'1' '0'  

Внимание
Помните, что все константы, перечисленные в табл. 3.11 (за исключением true и false), должны заключаться в апострофы. В противном случае сервер выдает сообщение об ошибке
.

В листинге 3.17 приведен пример создания таблицы daIly_i inventory с информацией о наличии книг в магазине. В этой таблице код ISBN ассоциируется с логическим признаком. После создания таблица заполняется серией команд INSERT, в которых передается строковая константа (код ISBN) и логические константы в разных форматах.

Листинг 3.17. Простая таблица с логическими значениями.

booktown=# CREATE TABLE daily_inventory
(isbn text .in_stock boolean);
CREATE
booktown=# INSERT INTO
dailyjnventory VALUES ('0385121679', true);
INSERT 3390926 1
booktown=# INSERT INTO dailyjnventory
VALUES ('039480001X'. 't');
INSERT 3390927 1
booktown=# INSERT INTO dailyjnventory
VALUES ('044100590X'. 'true');
INSERT 3390928 1
booktown=# INSERT INTO dailyjnventory
VALUES С0451198492', false);
INSERT 3390929 1
booktown=# INSERT INTO dailyjnventory
VALUES С0394900014', '0');
INSERT 3390930 1
booktown=# INSERT INTO dailyjnventory
VALUES ('0441172717'. '!');
INSERT 3390931 1
booktown=# INSERT INTO dailyjnventory
VALUES ('0451160916');
INSERT 3390932 1
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.