Json

postgresql:錯誤:位置 1 的路徑元素不是整數:

  • July 9, 2020

我正在嘗試使用另一列中存在的文本值更新 jsonb 列中的欄位值,但出現一些語法錯誤;沒有得到任何解決方案。

我正在嘗試在 JSONB 下面交換 OutgoingVertexid 和 IncomingVertexId 的值

'[
     {
        "Edgeid":10,
        "Weight":100,
        "Active":1,
        "OutgoingVertexid":"",
        "IncomingVertexid":"G",
        "EdgeColor":"Black"
     }
  ]
'

因此,通過將所有值 OutgoingVertexid 和 IncomingVertexid 值放在臨時表中來使用下面的程式碼。

UPDATE temp_table 
       SET 
       owner_property = CASE 
                           WHEN owner_outgoing_edge IS NOT NULL 
                               THEN jsonb_set(owner_property, '{OutgoingVertexid}', '""')
                           ELSE 
                               jsonb_set(owner_property, '{OutgoingVertexid}', ''||owner_incoming_edge::jsonb||'') 
                               END;

但得到以下錯誤:

錯誤:位置 1 的路徑元素不是整數:

提前致謝

您的 json 值是一個數組,而不是單個值。因此,您需要通過在傳遞給的數組中包含索引來選擇要更改的數組元素jsonb_set()

UPDATE temp_table 
 SET owner_property = CASE 
                       WHEN owner_outgoing_edge IS NOT NULL 
                         THEN jsonb_set(owner_property, '{0, OutgoingVertexid}', '""')
                       ELSE 
                         jsonb_set(owner_property, '{0, OutgoingVertexid}', to_jsonb(owner_incoming_edge)) 
                      END

引用自:https://dba.stackexchange.com/questions/270629