使用psql
,我想将布尔值格式化为默认显示为TRUE
和FALSE
的{{1}}和t
,如我发现的那样后者很难彼此区分。
我可以通过在f
中设置以下内容来更改null
的显示方式:
~/.psqlrc
对于布尔值,我该怎么做?
答案 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支持此设置。