从 JSON 字段中提取数据并过滤 NULL 值

您想从 PostgreSQL 数据库中的 JSON 字段中提取特定数据,并过滤掉值为 NULL 的数据,可以使用以下语句:

SELECT data_value::jsonb->>'accountName' AS accountName, data_value::jsonb->>'accountNumber' AS accountNumber
FROM t_access_itemdetail
WHERE data_value->>'accountName' IS NOT NULL AND data_value->>'accountNumber' IS NOT NULL;

解释:

  1. data_value::jsonb->>'accountName': 使用 ::jsonb 将 data_value 列转换为 JSONB 类型,然后使用 ->> 运算符提取 accountName 字段的值。
  2. WHERE data_value->>'accountName' IS NOT NULL: 使用 ->> 运算符获取 accountName 字段的值,并使用 IS NOT NULL 判断该值是否为空。
  3. AND data_value->>'accountNumber' IS NOT NULL: 同样使用 ->> 获取 accountNumber 字段的值,并判断其是否为空。

注意:

  • 以上语句假设 t_access_itemdetail 表中的 data_value 列的数据类型为 jsonb。如果 data_value 的数据类型是 json,则需要将 jsonb 替换为 json。
  • 如果您的 JSON 字段名称包含特殊字符,请使用双引号将其括起来,例如: data_value->>'"account-name"'。

示例:

假设 t_access_itemdetail 表中有一行数据,data_value 列的值为:

{"accountName": "John Doe", "accountNumber": "123456789"}

执行以上 SQL 语句后,将会返回以下结果:

| accountName | accountNumber | |---|---| | John Doe | 123456789 |

希望以上内容能帮助您解决问题。

如何从 JSON 字段中提取数据并过滤 NULL 值

原文地址: https://www.cveoy.top/t/topic/pVnw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录