小编典典

在Select(PostgreSQL / pgAdmin)中将布尔值返回为TRUE或FALSE

sql

在PostgreSQL(版本9.4,pgAdmin3)中,在具有布尔列的表上执行select时,数据输出显示为“ t”或“
f”。我想在不编写CASE语句或不执行JOINS等的情况下将布尔值转换/转换为TRUE或FALSE。

顺便说一句,根据PostgreSQL自己的文档,这种行为不是SQL标准。

关键字TRUE和FALSE是首选的(符合SQL的)用法。

PS:仅当在pgAdmin中使用SQL编辑器时,才会发生这种情况。使用pgAdmin对象浏览器,向下钻取到相同的表,右键单击,查看数据,查看前100行,按预期/标准,同一布尔列显示为TRUE或FALSE。


阅读 300

收藏
2021-04-22

共1个答案

小编典典

如果您只想显示文字TRUEFALSE,则可以使用您提出的case语句。因为PostgreSQL对待TRUEtrueyesonyt1为真,我会控制我怎么会想输出的样子。

Where子句可以这样写:

select * from tablename where active
--or--
select * from tablename where active = true

(我的建议与PostgreSQL相同-使用true)

选择时,尽管可能会犹豫使用case语句,但我仍然建议您这样做以控制您的输出字符串文字。

您的查询如下所示:

select 
  case when active = TRUE then 'TRUE' else 'FALSE' end as active_status,
  ...other columns...
from tablename
where active = TRUE;

SQLFiddle示例:http
://sqlfiddle.com/#!15/4764d/1

create table test (id int, fullname varchar(100), active boolean);
insert into test values (1, 'test1', FALSE), (2, 'test2', TRUE), (3, 'test3', TRUE);

select
  id,
  fullname,
  case when active = TRUE then 'TRUE' else 'FALSE' end as active_status
from test;

| id | fullname | active_status |
|----|----------|---------------|
|  1 |    test1 |         FALSE |
|  2 |    test2 |          TRUE |
|  3 |    test3 |          TRUE |
2021-04-22