2016-09-19 109 views
1

如何从Postgres中的字符串类型字段返回布尔值true/false而不是t/f。使用Postgres返回布尔值

SELECT (CASE WHEN status = 'active' THEN true ELSE false END)::boolean AS status 
FROM table; 
+0

只需使用'1'和'0'值。 – sagi

+0

@sagi:'1'和'0'不是布尔值,那些是数字 –

回答

3

tf是多么psql打印布尔值,它不应该是很重要的。此外,您还可以简化您的查询,如下所示:

SELECT status = 'active' AS status FROM table; 

如果你真的想要得到文本列status,请执行下列操作:

SELECT (status = 'active')::text AS status FROM table; 

如果你想获得一个号码,而不是(0对于假,1为真),这样做:

SELECT (status = 'active')::integer AS status FROM table; 
+0

查询的结果对我来说很重要,因为我在一个库中使用它在我的php代码中,结果必须是真/假而没有双引号 –

+1

@Nawalel我没有使用postgres的PHP绑定,但它应该正确处理第一个查询。如果它不尝试第三个,它将布尔变换为0/1。 – redneb