首页 > 解决方案 > postgresql 过滤来自 bytea 列的数据

问题描述

我有一个表,我将数据保存在 bytea 类型的列中,数据实际上是一个 JSON 对象。我需要对 JSON 数据实施过滤器。

SELECT  cast(job_data::TEXT as jsonb) FROM job_details where job_data ->> "organization" = "ABC";

此查询不起作用。JSON对象看起来像

{
    "uid": "FdUR4SB0h7",
    "Type": "Reference Data Service",
    "user": "hk@ss.com",
    "SubType": "Reference Data Task",
    "_version": 1,
    "Frequency": "Once",
    "Parameters": "sdfsdfsdfds",
    "organization": "ABC",
    "StartDateTime": "2020-01-20T10:30:00Z"
}

标签: sqlpostgresql

解决方案


您需要对转换后的列进行断言,此外,该转换可能不一定会根据编码起作用。尝试这样的事情:

SELECT
    *
FROM
    job_details
WHERE
    convert_from(job_data, 'UTF-8')::json ->> 'organization' = 'ABC';


推荐阅读