我有一個包含Json數據的俱樂部類型列。 我有大約100個按鍵,每個記錄都是唯一的。 我們正在使用json_value('json_data','keyname')。 在我的情況下,我不知道這個記錄的實際情況。所以我需要加入另一個表格,其中定義了鍵。我想要傳遞列名來代替鍵名。 它提供了一些錯誤說:在Oracle中傳遞JSON_VALUE()中的動態密鑰
語法錯誤,
期待:字符串
因此可以在任何一個建議,如何通過傳遞運行時動態鍵搞定從JSON列數據。
可以說我有兩個表table_1和table_2。 012_Table_1有一個名爲json_data_column的列,它以json格式存儲數據。Table_1具有映射關鍵字的FK到TABLE_2。 所以我們必須找出每個記錄的動態密鑰的價值。
如果我給任何靜態字符串代替t2.json_key,那麼它的工作。 但是,當給動態值,它不工作。
工作
select
json_value (json_value (t1.json_data_column, '$.string'), '$.my_key')
from TABLE_1 t1
inner join TABLE_2 t2 on t1.json_key_fk = t2.id
不工作
select
json_value (json_value (t1.json_data_column, '$.string'), t2.json_key)
from TABLE_1 t1
inner join TABLE_2 t2 on t1.json_key_fk = t2.id
數據集:
{"string":"{\"id\":133100,\"data_found\":5,\"isActive\":\"true\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
{"string":"{\"id\":133100,\"data_found\":5,\"isDelete\":\"true\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
{"string":"{\"id\":133100,\"data_found\":5,\"isUnderProgress\":\"false\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
{"string":"{\"id\":133100,\"data_found\":5,\"isSentToClient\":\"false\",\"process\":\"completed\",\"status\":\"COMPLETED\"}"}
您可以發佈一些示例數據?這將幫助我們形象化你的問題 – APC