我使用
我使用的SQL如下所示。运行查询只返回一个空数组。
我尝试了此处和此处建议的查询。
这是我的
我希望有一个SQL查询语句可以返回以下内容:
我尝试了这个SQL查询:
我也尝试了这个查询:
这里是第三个查询:
PostgreSQL 9.5
和Rails 5。我想查询下面显示的jsonb
列,其中包含一个JSON对象数组,以返回所有包含{"kind":"person"}
的JSON数组元素,并执行计数。我使用的SQL如下所示。运行查询只返回一个空数组。
我尝试了此处和此处建议的查询。
这是我的
jsonb
数据长什么样: '[
{"kind":"person", "filter_term":"56","selected_attr":"customer"},
{"kind":"email", "filter_term":"marketer","selected_attr":"job_title"}
]'
我希望有一个SQL查询语句可以返回以下内容:
data
----------------------------------------------------------------------
'{"kind":"person", "filter_term":"56","selected_attr":"customer"}'
(1 row)
还有另一个查询将数组返回,这样我就可以在我的应用程序中调用count并循环遍历它来创建表单:
data
----------------------------------------------------------------------
'[{"kind":"person", "filter_term":"56","selected_attr":"customer"}]'
(1 row)
我尝试了这个SQL查询:
"SELECT * FROM \"segments\" WHERE (payload @> '[{\"kind\":\"person\"}]')"
我也尝试了这个查询:
"SELECT payload FROM segments WHERE payload @> '[{\"kind\":\"person\"}]'::jsonb;"
这里是第三个查询:
"SELECT * FROM segments s WHERE s.payload->'\"#{a}\"' @> '[{\"kind\":\"person\"}]';"
这个模型:
class Segment < ApplicationRecord
store_accessor :payload,:kind, :filter_term, :selected_model_name, :selected_attr, :limit, :selected_operator
end
迁移:
create_table "segments", force: :cascade do |t|
t.jsonb "payload", default: "[]", null: false
t.index ["payload"], name: "index_segments_on_payload", using: :gin
end
=>
是hstore
的有效语法,但不适用于json
(或jsonb
)。 一个有效的JSON字面量:'{"kind":"person"}'
。请修复您的示例并添加您期望的结果。 "所有的JSON"有点模糊。还有一个表行,还有数据类型json
,但是什么是“json行”?您是指JSON数组元素吗? - Erwin Brandstetter