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

mar*_* li 1 sql postgresql lua

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

SELECT EXISTS (
SELECT id
FROM user
WHERE membership=1244)
Run Code Online (Sandbox Code Playgroud)

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

我找到了以下帖子:

通过PHP从Postgres正确读取布尔值

所以我试图将我的代码更改为这样的代码:

SELECT EXISTS ::int (
SELECT id
FROM user
WHERE membership=1244)
Run Code Online (Sandbox Code Playgroud)

要么

SELECT ::INT (SELECT EXISTS (
SELECT id
FROM user
WHERE membership=1244))
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Bar*_*ird 11

你是如此亲密

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


Clo*_*eto 7

您的第一个查询确实返回一个布尔值。At显示为查询的返回值

select exists (select 1);
 exists 
--------
 t
Run Code Online (Sandbox Code Playgroud)

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

select pg_typeof(exists (select 1));
 pg_typeof 
-----------
 boolean
Run Code Online (Sandbox Code Playgroud)

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


sla*_*voo 5

尝试一下CASE

select       
  (case when exists (SELECT id FROM user WHERE membership = 1244)
    then 1 
    else 0 
  end) as column;
Run Code Online (Sandbox Code Playgroud)

我的测试小提琴