我有users
json列的表details
.
我想获取所有用户记录,其中详细信息["email"]为空或电子邮件密钥不存在.
这不起作用:
SELECT users.* FROM users where details->'email' IS NOT NULL;
ERROR: operator does not exist: json -> boolean
Rom*_*kar 57
使用括号()
.看起来编译器试图看到它details->('email' IS NOT NULL)
.所以你可以像这样解决它:
select *
from users
where (details->'email') is not null
Run Code Online (Sandbox Code Playgroud)
实际上,要获取详细信息["email"]为空或电子邮件密钥不存在的记录,您可以使用此查询:
select *
from users
where (details->>'email') is null
Run Code Online (Sandbox Code Playgroud)
如本答案所述.
您需要使用->>
运算符:
select *
from users
where (details->>'email') is not null
Run Code Online (Sandbox Code Playgroud)
因为如果键存在但是具有json null值,则->
运算符返回'null'::json
(而不是sql NULL
).
http://sqlfiddle.com/#!15/76ec4/2
归档时间: |
|
查看次数: |
15994 次 |
最近记录: |