如果主请求字段为None或为空,则使用Conditionals(CASE)从另一个字段中检索值

时间:2019-04-05 12:33:07

标签: postgresql

我有一张桌子Image

id  | path      | additional                       | item_id 
1     /url/..     {"sm":"/url2/", "md": "/url3/"}            1     

additional是一个jsonb,可以为Null,空{}或带有值

我想检查jsonb是否存在像sm这样的键。如果键存在,则返回值,否则返回path

我的初始想法是使用CASE,但是我在检查数组和从数组中获取值时遇到了问题

1 个答案:

答案 0 :(得分:2)

使用coalesce()

select id, 
       coalesce(additional ->> 'sm', path) as path
from image;

如果键不存在,则运算符->>将返回null