【发布时间】:2020-10-06 09:26:09
【问题描述】:
我正在使用以下查询从 JSON 列中获取数据。
SELECT id FROM ( SELECT id,JSON_ARRAY_ELEMENTS(shipment_lot::json) AS js2 FROM file_table WHERE ('shipment_lot') = ('shipment_lot') ) q WHERE js2->> 'invoice_number' LIKE ('%" abc1123"%')
我的 Postgresql 版本是 9.3
JSON 列中保存的数据:
[{ "id"=>2981, "lot_number"=>1, "activate"=>true, "invoice_number"=>"abc1123", "price"=>378.0}]
但是,我收到了这个错误:
ActiveRecord::StatementInvalid (PG::InvalidParameterValue: ERROR: cannot extract element from a scalar:
SELECT id FROM
( SELECT id,JSON_ARRAY_ELEMENTS(shipment_lot::json)
AS js2 FROM file_heaps
WHERE ('shipment_lot') = ('shipment_lot') ) q
WHERE js2->> 'invoice_number' LIKE ('%abc1123%'))
我该如何解决这个问题。
【问题讨论】:
-
那不是有效的 JSON,这可能是你的问题。我建议改用 jsonb 列,您可以只插入一个散列,rails 会在插入/选择时将其转换为散列
-
实际上,直到昨天,这段代码都在使用相同的数据集。所以我非常需要使用相同的查询。
-
那不可能,那不是 JSON,它永远无法使用
::json进行转换 -
如您所见,我只需要上述查询中的“id”
标签: sql ruby-on-rails json postgresql