我从MySQL来到PostgreSQL,然后在PostgreSQL中使用布尔state
列创建了test
表,如下所示:
CREATE TABLE test (
state BOOLEAN -- Here
);
但是,即使下面的 SQL 查询在MySQL中工作,我也无法将带有1
的TRUE
和带有0
FALSE
插入到test
表中,如下所示:
INSERT INTO test VALUES (1);
INSERT INTO test VALUES (0);
然后,我收到以下错误:
ERROR: column "state" is of type boolean but expression is of type integer
那么,如何将布尔值插入表中呢?
您可以在PostgreSQL中插入带有'1'
的TRUE
和带有'0'
的FALSE
,如下所示:
INSERT INTO test VALUES ('1');
INSERT INTO test VALUES ('0');
然后,t
TRUE
和f
FALSE
插入到表中test
如下所示:
postgres=# SELECT * FROM test;
state
-------
t
f
(2 rows)
此外,下面的这些 SQL 查询还可以将TRUE
和FALSE
插入到表中test
如下所示:
TRUE
:
INSERT INTO test VALUES (tRuE);
INSERT INTO test VALUES ('TrUe');
INSERT INTO test VALUES ('T');
INSERT INTO test VALUES ('t');
INSERT INTO test VALUES ('YeS');
INSERT INTO test VALUES ('Y');
INSERT INTO test VALUES ('y');
INSERT INTO test VALUES ('oN');
FALSE
:
INSERT INTO test VALUES (fAlSe);
INSERT INTO test VALUES ('FaLsE');
INSERT INTO test VALUES ('F');
INSERT INTO test VALUES ('f');
INSERT INTO test VALUES ('No');
INSERT INTO test VALUES ('N');
INSERT INTO test VALUES ('n');
INSERT INTO test VALUES ('oFf');
在 PostgreSQL 中插入布尔值的标准方法是使用文字布尔值true
或false
或任何计算结果为布尔值的表达式。
例如:
create table test (
state boolean
);
insert into test (state) values (true);
insert into test (state) values (false);
insert into test (state) values (3 * 5 > 10);
select * from test;
返回:
state
-----
t
f
t
请参阅 db<>fiddle 中的运行示例。