📄 boolean.sql
字号:
---- BOOLEAN------ sanity check - if this fails go insane!--SELECT 1 AS one;-- ******************testing built-in type bool********************-- check bool type-casting as well as and, or, not in qualifications--SELECT bool 't' AS true;SELECT bool ' f ' AS false;SELECT bool 't' or bool 'f' AS true;SELECT bool 't' and bool 'f' AS false;SELECT not bool 'f' AS true;SELECT bool 't' = bool 'f' AS false;SELECT bool 't' <> bool 'f' AS true;-- explicit casts to/from textSELECT 'TrUe'::text::boolean AS true, 'fAlse'::text::boolean AS false;SELECT ' true '::text::boolean AS true, ' FALSE'::text::boolean AS false;SELECT true::boolean::text AS true, false::boolean::text AS false;SELECT ' tru e '::text::boolean AS invalid; -- errorSELECT ''::text::boolean AS invalid; -- errorCREATE TABLE BOOLTBL1 (f1 bool);INSERT INTO BOOLTBL1 (f1) VALUES (bool 't');INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True');INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true');-- BOOLTBL1 should be full of true's at this point SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1;SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1 WHERE f1 = bool 'true';SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1 WHERE f1 <> bool 'false';SELECT '' AS zero, BOOLTBL1.* FROM BOOLTBL1 WHERE booleq(bool 'false', f1);INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f');SELECT '' AS f_1, BOOLTBL1.* FROM BOOLTBL1 WHERE f1 = bool 'false';CREATE TABLE BOOLTBL2 (f1 bool);INSERT INTO BOOLTBL2 (f1) VALUES (bool 'f');INSERT INTO BOOLTBL2 (f1) VALUES (bool 'false');INSERT INTO BOOLTBL2 (f1) VALUES (bool 'False');INSERT INTO BOOLTBL2 (f1) VALUES (bool 'FALSE');-- This is now an invalid expression-- For pre-v6.3 this evaluated to false - thomas 1997-10-23INSERT INTO BOOLTBL2 (f1) VALUES (bool 'XXX'); -- BOOLTBL2 should be full of false's at this point SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2;SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 <> BOOLTBL1.f1;SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1);SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false';SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true' ORDER BY BOOLTBL1.f1, BOOLTBL2.f1;---- SQL92 syntax-- Try all combinations to ensure that we get nothing when we expect nothing-- - thomas 2000-01-04--SELECT '' AS "True", f1 FROM BOOLTBL1 WHERE f1 IS TRUE;SELECT '' AS "Not False", f1 FROM BOOLTBL1 WHERE f1 IS NOT FALSE;SELECT '' AS "False", f1 FROM BOOLTBL1 WHERE f1 IS FALSE;SELECT '' AS "Not True", f1 FROM BOOLTBL1 WHERE f1 IS NOT TRUE;SELECT '' AS "True", f1 FROM BOOLTBL2 WHERE f1 IS TRUE;SELECT '' AS "Not False", f1 FROM BOOLTBL2 WHERE f1 IS NOT FALSE;SELECT '' AS "False", f1 FROM BOOLTBL2 WHERE f1 IS FALSE;SELECT '' AS "Not True", f1 FROM BOOLTBL2 WHERE f1 IS NOT TRUE;---- Clean up-- Many tables are retained by the regression test, but these do not seem-- particularly useful so just get rid of them for now.-- - thomas 1997-11-30--DROP TABLE BOOLTBL1;DROP TABLE BOOLTBL2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -