如何向 PostgreSQL 中的表插入布尔值?

3 sql database postgresql boolean sql-insert

然后我从MySQL转到PostgreSQL ,我在PostgreSQL中创建了带有BOOLEAN列的test表,如下所示:state

CREATE TABLE test (
  state BOOLEAN -- Here
);
Run Code Online (Sandbox Code Playgroud)

但是,即使下面的 SQL 查询在MySQL中工作,我也无法插入TRUEwith1和FALSEwith0到test表,如下所示:

INSERT INTO test VALUES (1);
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES (0);
Run Code Online (Sandbox Code Playgroud)

然后,我收到以下错误:

ERROR:  column "state" is of type boolean but expression is of type integer
Run Code Online (Sandbox Code Playgroud)

那么,如何向表中插入布尔值呢?

小智 7

您可以在PostgreSQL中插入TRUEwith'1'和FALSEwith ,如下所示:'0'

INSERT INTO test VALUES ('1');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('0');
Run Code Online (Sandbox Code Playgroud)

然后,将twhich isTRUE和fwhich isFALSE插入到test表中,如下所示:

postgres=# SELECT * FROM test;
 state
-------
 t
 f
(2 rows)
Run Code Online (Sandbox Code Playgroud)

此外,下面的这些 SQL 查询也可以用于插入TRUE和FALSE表 test,如下所示:

TRUE:

INSERT INTO test VALUES (tRuE);
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('TrUe');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('T');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('t');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('YeS');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('Y');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('y');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('oN');
Run Code Online (Sandbox Code Playgroud)

FALSE:

INSERT INTO test VALUES (fAlSe);
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('FaLsE');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('F');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('f');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('No');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('N');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('n');
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test VALUES ('oFf');
Run Code Online (Sandbox Code Playgroud)