我想在Postgresql中搜索记录。我有一个表,并有一个列,它作为文本数据类型(称为A列)创建。在一列中,我将数据保存为JSON数据类型。例如:
ID A column
1 {"A1":["1"]}
2 {"A2":["2"], "B":["3"]}我正在使用Java搜索数据。我的条件搜索是"A1":"1","2“。我怎么能搜索?请帮我解决问题!
发布于 2016-06-16 04:52:14
这条路:
CREATE TEMP TABLE tab (ID int, "A column" text);
INSERT INTO tab VALUES
(1, '{"A1":["1"]}'),
(2, '{"A2":["2"], "B":["3"]}'),
(3, '{"A2":["1","2"], "B":["3"]}');
SELECT * FROM tab WHERE ("A column"::json->>'A2') = '["1","2"]';只有当"A column"中的所有值都被正确地格式化为json时,它才能工作。否则,您必须使用一个函数来捕获转换异常,当它是无效的json值时返回null。
更新
如果您希望一个集合中有一个值的所有字段,那么
SELECT * FROM tab
WHERE ARRAY(select json_array_elements_text("A column"::json->'A2')::text)
&& ARRAY['1','2'];https://stackoverflow.com/questions/37849036
复制相似问题