sql - 从 jsonb 列获取特定值

标签 sql json postgresql jsonb

我有一张表Customer

  • 客户编号(整数)
  • 客户姓名(字符串)
  • 客户订单(jsonB)

customerOrders 具有以下结构:

{ 
 "nodeValue":[
   { 
      "key": "key1",
      "value": "value1"
   },
   { 
      "key": "key2",
      "value": "value2"
   },
   { 
      "key": "key3",
      "value": "value3"
   },
   { 
      "key": "key4",
      "value": "value4"
   },
   { 
      "key": "key5",
      "value": "value5"
   }
 ]
}

我正在尝试获取 key = 'key3' AND key = 'key4' 行的 nodeValue 的值。

例如:返回 'key3' 和 'key4' 的值,WHERE key = 'key3' AND key = 'key4'

我正在尝试做类似的事情:

SELECT value, value 
from public.customers 
where nodeValue.key3 = 'key3' 
  AND nodeValue.key4 = 'key4'

最佳答案

with orders as 
(
   select jsonb_array_elements(customerOrders->'nodeValue') as orders
   from customers
) 
select orders->'value' as val 
from orders 
where 
    orders->>'key' = 'key3' 
or  orders->>'key' = 'key4';

结果:

值1

值2

请注意使用运算符 ->> 获取文本值

db-fiddle

关于sql - 从 jsonb 列获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60025903/

相关文章:

SQL 排序顺序,最后为空值

C# 循环、SQL 和检索信息

sql - PL/pgSQL 函数在 pgAdmin 之外无法正确运行

mysql - 如何将数据从 ASCII (ISO/IEC 8859-1) 导入我的 Rails/PGSQL 数据库?

sql - 在 SNOWFLAKE SQL 中选择和聚合不同 id 的变量

asp.net - 遇到除零错误

c# - StringContent 与 ObjectContent

php - ASyncTask HTTP 错误

javascript - 在 NodeJS Express 中返回带有嵌套数组的 JSON 数据和标题

PostgreSQL 全文搜索 : why search is sooo slow?