在PostgreSQL(9.4版,pgAdmin3)中,当对具有布尔列的表执行select时,数据输出显示“t”或“f”。我想在不写CASE语句或进行连接的情况下,将布尔值转换为TRUE或FALSE。
顺便说一句,根据PostgreSQL自己的文档,这种行为不是SQL标准。
关键字TRUE和FALSE是首选(符合SQL的)用法。
PS:只有在pgAdmin中使用SQL编辑器时才会发生这种情况。使用pgAdmin对象浏览器,向下钻取到同一个表,单击鼠标右键,查看数据,查看前100行,同一个布尔列按预期/标准显示为TRUE或FALSE。
一个简单的转换为text
就可以完成这项工作(除非您需要大写拼写):
SELECT true::text AS t, false::text AS f;
t | f
------+-------
true | false
否则,文本表示取决于用于连接的库和客户端。例如,JDBC将boolean
值呈现为'true'/'false'
分贝
你会喜欢Postgres 9.5中的这个变化(引用发行说明):
此更改会导致布尔值转换为字符串,以生成true
或false
,而不是t
或f
。其他类型转换可能在比以前更多的情况下成功;例如,将数值3.9
分配给整数变量现在将分配4
而不是失败。如果没有为特定的源和目标类型定义赋值级转换,PL/pgSQL将退回到其旧的I/O转换行为。
大胆强调我的。
如果您只想显示文本TRUE
或FALSE
,那么您可以像建议的那样使用case语句。由于PostgreSQL将TRUE
、TRUE
、yes
、on
、y
、t
和1
视为TRUE,因此我可以控制输出的外观。
其中子句可以写成:
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 |
如何在SQL Select语句上返回布尔值? 我尝试了以下代码: 并且它只返回如果存在于表中。如果表中不存在UserID,我希望它返回。
问题内容: 我遇到了这种语法: 这个带有两个点的语法是什么? 在哪里可以找到有关它的信息? 它仅适用于布尔值还是以其他不同方式实现? 问题答案: 是条件运算符。(不只是一部分,整个方法参数是示例中条件运算符的一种用法。) 它通常被称为三元运算符,但这只是其本质的一个方面-具有三个操作数- 而不是其名称。如果在Java中引入了另一个三元运算符,则该术语将变得模棱两可。之所以称为条件运算符,是因为它有
我正在我的web应用程序中运行以下sql查询: 我期望结果为true(布尔数据),但我得到的是false的t或f。我如何让它返回到我的lua代码一个标准的布尔值? 我发现了以下帖子: 用PHP正确读取Postgres中的布尔值 所以我试着把代码改成这样: 或 但是我有一个语法错误<你能告诉我最好的处理方法吗?我是否应该以某种方式将结果“t”转换为布尔值?或者有没有办法告诉postgresql返回t
我试图返回一个“矩阵”或2D数组,其中布尔值根据旁边有多少个“真”值变成1-4之间的数字。我以前尝试过一种不同的方法,下面是当前的代码。 问题是: 当矩阵=[[true,false,false],[false,true,false],[false,false,false]] 输出应该是[[1,2,1],[2,1,1],[1,1,1]] 我的代码: 我的错误/结果: 输入矩阵:[[true,fals
问题内容: 关于以下原因为何的任何想法。 当我将request_url粘贴到浏览器中时,我会获取json数据,但是如果我在php中尝试,则var_dump就是bool(false); 有任何想法吗?? 更新并修复 OK伙计们,感谢您的所有帮助。是的,我帮助我追踪了这一情况。事实证明,php.ini配置为禁止打开url,因此file_get_contents无法正常工作。我在各个站点上发现了以下方便
好的,我的问题是关于布尔返回。对于我的Comp-Sci作业,我必须使用多种方法制作一个课程注册程序,其中之一就是添加课程方法。基本上,在目录中搜索类,如果匹配,则将其添加到学生计划中,并返回布尔值true。我这么做了,但出于某种原因,这给了我一个错误。以下是代码: 为什么它不能识别布尔返回值?是因为我把它们放在了一个圈里吗?