如何使用JSON函数/运算符查询key是非null还是null?

时间:2015-08-05 14:39:41

标签: json postgresql rails-4-2-1

我正在寻找以下sql代码的活动记录版本:

select *
from users
where (details->'email') is not null

假设我的用户模型有一个叫做详细信息的json字段,有些记录会有一个电子邮件键值,有些则不会。我正在尝试查询具有电子邮件密钥值的用户记录。我尝试使用以下内容,User.where(“details->'email'不为空”),但我的终端打印出来:

PG::UndefinedFunction: ERROR:  operator does not exist: json -> boolean

我找到了这个SO帖子,试图做相反的查询,但想法是一样的。如果有人可以向我展示查询json密钥存在或不存在的Active Record版本,我将非常感激。

1 个答案:

答案 0 :(得分:6)

这适用于为用户提供电子邮件密钥:

User.where("(details->'email') is not null")

这适用于没有电子邮件密钥的用户:

User.where("(details->'email') is null")