布尔类型也是常用的数据类型,本节将详细讲解此类型的使用方法。
boolean的值要么是true(真),要么是false(假),如果是unknown(未知)状态,用NULL表示。boolean在SQL中可以用不带引号的TRUE或FALSE表示,也可以用其他表示“真”和“假”的带引号字符表示,如'true'、'false'、'yes'、'no',等等,具体见下面的测试:
osdba=# CREATE TABLE t (id int, col1 boolean, col2 text); CREATE TABLE osdba=# INSERT INTO t VALUES (1,TRUE, 'TRUE'); INSERT 0 1 osdba=# INSERT INTO t VALUES (2,FALSE, 'FALSE'); INSERT 0 1 osdba=# osdba=# INSERT INTO t VALUES (3,tRue, 'tRue'); INSERT 0 1 osdba=# INSERT INTO t VALUES (4,fAlse, 'fAlse'); INSERT 0 1 osdba=# osdba=# INSERT INTO t VALUES (5,'tRuE', '''tRuE'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (6,'fALsE', '''fALsE'''); INSERT 0 1 osdba=# osdba=# INSERT INTO t VALUES (7,'true', '''true'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (8,'false', '''false'''); INSERT 0 1 osdba=# osdba=# INSERT INTO t VALUES (9,'t', '''t'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (10,'f', '''f'''); INSERT 0 1 osdba=# osdba=# osdba=# INSERT INTO t VALUES (11,'y', '''y'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (12,'n', '''n'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (13,'yes', '''yes'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (14,'no', '''no'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (15,'1', '''1'''); INSERT 0 1 osdba=# INSERT INTO t VALUES (16,'0', '''0'''); INSERT 0 1 osdba=# select * from t; id | col1 | col2 ----+------+--------- 1 | t | TRUE 2 | f | FALSE 3 | t | tRue 4 | f | fAlse 5 | t | 'tRuE' 6 | f | 'fALsE' 7 | t | 'true' 8 | f | 'false' 9 | t | 't' 10 | f | 'f' 11 | t | 'y' 12 | f | 'n' 13 | t | 'yes' 14 | f | 'no' 15 | t | '1' 16 | f | '0' (16 rows) osdba=# select * from t where col1; id | col1 | col2 ----+------+-------- 1 | t | TRUE 3 | t | tRue 5 | t | 'tRuE' 7 | t | 'true' 9 | t | 't' 11 | t | 'y' 13 | t | 'yes' 15 | t | '1' (8 rows) osdba=# select * from t where not col1; id | col1 | col2 ----+------+--------- 2 | f | FALSE 4 | f | fAlse 6 | f | 'fALsE' 8 | f | 'false' 10 | f | 'f' 12 | f | 'n' 14 | f | 'no' 16 | f | '0' (8 rows)
布尔类型可以使用的操作符是逻辑操作符和比较操作符。
表5-2 布尔AND、OR运算真值表
表5-3 NOT运行真值表
常用的逻辑操作符有:AND、OR、NOT。
SQL使用三值的布尔逻辑:TRUE、FALSE和NULL,其中NULL代表“未知”。运算规则见表5-2和表5-3。
操作符AND和OR左右两边的操作是可以互相交换的,也就是说,“a AND b”结果与“b AND a”的结果是相同的。
布尔类型可以使用“IS”这个比较运算符,具体如下:
·expression IS TRUE。
·expression IS NOT TRUE。
·expression IS FALSE。
·expression IS NOT FALSE。
·expression IS UNKNOWN。
·expression IS NOT UNKNOWN。