检查postgresql查询中的布尔值true / false结果

时间:2013-07-23 13:54:16

标签: sql postgresql lua

我在我的网络应用程序中运行以下sql查询:

SELECT EXISTS (
SELECT id
FROM user
WHERE membership=1244)

我期待 true (布尔数据)作为结果,但我得到't'或'f'表示错误。 如何让它返回我的lua代码标准布尔值?

我找到了以下帖子:

Reading boolean correctly from Postgres by PHP

因此我尝试将代码更改为以下内容:

SELECT EXISTS ::int (
SELECT id
FROM user
WHERE membership=1244)

SELECT ::INT (SELECT EXISTS (
SELECT id
FROM user
WHERE membership=1244))

但是我收到了语法错误 你能告诉最好的办法吗?我应该以某种方式将结果't'转换为布尔值吗?或者有没有办法告诉postgresql返回true / false而不是't'/'f'?

感谢。

4 个答案:

答案 0 :(得分:11)

你是如此亲密

SELECT EXISTS (SELECT id FROM user WHERE membership=1244)::int 

答案 1 :(得分:4)

使用CASE

尝试
select       
  (case when exists (SELECT id FROM user WHERE membership = 1244)
    then 1 
    else 0 
  end) as column;

my test fiddle

答案 2 :(得分:2)

你的第一个查询确实返回了一个布尔值。 t显示为查询的返回值

select exists (select 1);
 exists 
--------
 t

但如果你检查它的类型,它是一个布尔值:

select pg_typeof(exists (select 1));
 pg_typeof 
-----------
 boolean

您必须查看lua的postgresql驱动程序手册,了解如何正确处理它。

答案 3 :(得分:0)

您的初始查询本身就很好:

SELECT id FROM user WHERE membership=1244

您只需要检查它是否返回一行。