【发布时间】:2017-03-17 15:13:03
【问题描述】:
我有一个包含 Json 数据的俱乐部类型列。 我有大约 100 个键,每条记录都是唯一的。 我们正在使用 json_value('json_data', 'keyname')。 就我而言,我不知道该记录的实际情况。所以我需要加入另一个定义了键的表。代替键名,我想传递列名。 它给出了一些错误说:
语法错误,
期望:字符串
任何人都可以建议,如何通过在运行时传递动态键从 json 列中获取数据。
假设我有两个表 table_1 和 table_2。 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\"}"}
【问题讨论】:
-
你能发布一些示例数据吗?这将帮助我们可视化您的问题