为什么 't' 和 'f' 而不是 TRUE 和 FALSE

hag*_*nat 9 postgresql datatypes psql

为什么 PostgreSQL 返回 't' 和 'f' 而不是 TRUE 和 FALSE?

文档本身的建议我们将布尔值或进行比较时使用的真与假,但选择从数据库中的值时,返回不同的价值观。

CREATE TABLE test1 (a boolean, b text);
INSERT INTO test1 VALUES (TRUE, 'sic est');
INSERT INTO test1 VALUES (FALSE, 'non est');
SELECT * FROM test1;
 a |    b
---+---------
 t | sic est
 f | non est
Run Code Online (Sandbox Code Playgroud)

这种行为有原因吗?PostgreSQL 社区有没有尝试过改变它?

dez*_*zso 15

PostgreSQL 不返回这些而不是布尔值。它是一些客户端(例如,psql和 pgAdminIII)代表TRUEwithtFALSEwith f- 在另一个客户端尝试相同的查询,您将看到其他内容。例如,请参阅DBVisualizer为您提供的内容:

在此处输入图片说明

我想对展示的原因t,并f在缺乏水平滚动的能力一个命令行客户端仅仅是节约空间。

注意:我绝不隶属于 DbVis Software。

  • 如果查询以文本模式询问其结果,postgres 仍然返回 `t` 或 `f`,例如 `psql`。它还返回列数据类型的 OID,因此客户端知道它是一个布尔值,因此它可以翻译/本地化该值。 (3认同)