PG :: InvalidParameterValue: ERROR: невозможно извлечь элемент из скаляра - PullRequest
1 голос
/ 16 июня 2020

Я получаю данные из столбца 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%'))

Как я могу решить эту проблему.

1 Ответ

0 голосов
/ 16 июня 2020

Ваша проблема в том, что у вас есть неправильные JSON сохраненные

Если вы попытаетесь запустить пример данных на postgres, он не запустится

SELECT ('[{ "id"=>2981, "lot_number"=>1, "activate"=>true, "invoice_number"=>"abc1123", "price"=>378.0}]')::json

Это JSON отформатирован правильно:

SELECT ('[{ "id":2981, "lot_number":1, "activate":true, "invoice_number":"abc1123", "price":378.0}]')::json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...