当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《在Select(PostgreSQL/pgAdmin)中将布尔值返回为TRUE或FALSE》经验,为你挑选了2个好方法。

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

BTW,根据PostgreSQL自己的文档,这种行为不是SQL标准.

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

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



1> zedfoxus..:

如果您要显示的只是文字TRUE或者FALSE,您可以使用您提议的案例陈述.因为PostgreSQL对待TRUE,true,yes,on,y,t1为真,我会控制我怎么会想输出的样子.

Where子句可以写成:

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

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

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

您的查询将如下所示:

select 
  case 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 |



2> Erwin Brands..:

一个简单的演员来text完成这项工作(除非你需要大写拼写):

SELECT true::text AS t, false::text AS f;

 t    | f
------+-------
 true | false

否则,文本表示取决于您用于连接的库和客户端.例如,JDBC将boolean值呈现为'true'/'false':

SQL小提琴.

你会喜欢Postgres 9.5(目前的候选版本)中的这一变化:

在PL/pgSQL分配中使用赋值转换行为进行数据类型转换,而不是在文本中转换和转换(Tom Lane)

这种变化会导致对字符串布尔型转换为生产truefalsetf.其他类型的转换可能比以前更多的情况下成功; 例如,将数值3.9赋给整数变量现在将分配4而不是失败.如果没有为特定的源和目标类型定义任务等级强制转换,PL/pgSQL将回退到其旧的I/O转换行为.

大胆强调我的.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有