我尝试根据对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 列上使用相同的语法完全正常。)
答案 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;