在Postgres中查询JSON时出错:函数json_extract_path_text(text,text)不存在

时间:2014-06-16 02:09:35

标签: json postgresql

我尝试根据对Postgres最新版本(9.3.4)中包含JSON的 text 列的查询来设置视图,但是我收到错误消息我一直无法找到任何讨论。

假设该表名为 table1 ,特定列 json_data 具有类似

的内容
{"item1": "value1", "item2": "value2", "item3": 3, "item4": 4, "item5": 5}

这是我的问题:

SELECT 
json_extract_path_text((table1.json_data)::text, 
('item1'::character varying)::text) AS item1
FROM
table1

我得到的错误是

ERROR:  function json_extract_path_text(text, text) does not exist
LINE 2: json_extract_path_text((table1.json_data)...
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

我迷失了如何解决这个问题。 (另外,我有一个类似的视图,在特定表中的类似 text 列上使用相同的语法完全正常。)

2 个答案:

答案 0 :(得分:5)

出于某种原因,您将json输入转换为text

json_extract_path_text((table1.json_data)::text

不要这样做。

SELECT 
    json_extract_path_text(
        table1.json_data,
        'item1'
    ) AS item1
FROM table1

答案 1 :(得分:3)

由于table1.json_data已经是文本,因此需要将其强制转换为json。您也不需要指定表名,因为它在FROM子句中。

SELECT json_extract_path_text(json_data::json,'item1') AS item1 FROM table1;