如何使用psql格式化布尔值?

时间:2018-08-06 22:47:30

标签: psql

使用psql,我想将布尔值格式化为默认显示为TRUEFALSE的{​​{1}}和t,如我发现的那样后者很难彼此区分。

我可以通过在f中设置以下内容来更改null的显示方式:

~/.psqlrc

对于布尔值,我该怎么做?

2 个答案:

答案 0 :(得分:1)

虽然似乎没有像null分隔符那样修改psql输出行为的简单方法,但可以通过修改输出值并将其转换为文本来实现另一种方式。

给出如下模式:

CREATE TABLE bools (
  name text,
  alive boolean
  );

INSERT INTO bools VALUES ('Taylor Swift', TRUE);
INSERT INTO bools VALUES ('Elvis Presley', FALSE);

然后我们可以查询布尔值,一路转换为大小写,甚至创建一个为我们处理转换的函数:

postgres=# SELECT name, alive FROM bools;
     name      | alive
---------------+-------
 Taylor Swift  | t
 Elvis Presley | f
(2 rows)

postgres=# SELECT name, alive::text FROM bools;
     name      | alive
---------------+-------
 Taylor Swift  | true
 Elvis Presley | false
(2 rows)

postgres=# SELECT name, UPPER(alive::text) AS alive FROM bools;
     name      | alive
---------------+-------
 Taylor Swift  | TRUE
 Elvis Presley | FALSE
(2 rows)

postgres=# CREATE FUNCTION bool_to_upper(boolean) RETURNS text
postgres-#     AS $$ SELECT UPPER(CAST($1 AS text)) $$
postgres-#     LANGUAGE SQL;
CREATE FUNCTION

postgres=# SELECT name, bool_to_upper(alive) AS alive FROM bools;
     name      | alive
---------------+-------
 Taylor Swift  | TRUE
 Elvis Presley | FALSE
(2 rows)

有关Postgresql 9.6的工作示例,请参见this SQLfiddle

答案 1 :(得分:0)

没有任何设置可让您格式化布尔输出格式,但是几年前Marko Tikkaja published a patch支持此设置。