在PostgreSQL(版本9.4,pgAdmin3)中,在具有布尔列的表上执行select时,数据输出显示为“ t”或“ f”。我想在不编写CASE语句或不执行JOINS等的情况下将布尔值转换/转换为TRUE或FALSE。
顺便说一句,根据PostgreSQL自己的文档,这种行为不是SQL标准。
关键字TRUE和FALSE是首选的(符合SQL的)用法。
PS:仅当在pgAdmin中使用SQL编辑器时,才会发生这种情况。使用pgAdmin对象浏览器,向下钻取到相同的表,右键单击,查看数据,查看前100行,按预期/标准,同一布尔列显示为TRUE或FALSE。
如果您只想显示文字TRUE或FALSE,则可以使用您提出的case语句。因为PostgreSQL对待TRUE,true,yes,on,y,t和1为真,我会控制我怎么会想输出的样子。
TRUE
FALSE
true
yes
on
y
t
1
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 |