我有一些数据库将对象的 json 数组存储在一列中。如果对象的 id 具有特定值,我需要从这些对象键中创建列
我的文档表很简单:
id | name | percent_split
1 | some name | [ {id: 59, share:22, value: 55},{id:58, share:40, value:33}]
我已经尝试了以下的一些变体来获取数据,更不用说从对象键中创建列了:
SELECT
id, name,
(SELECT FROM documents
WHERE (
CASE WHEN JSON_VALID(percent_split) THEN
json_search(percent_split, 'one', '{"id":"59"}')
ELSE null
END)
) AS result_for_59
FROM documents
我想在我的查询结果中获得额外的列
id, name, 59_share, 59_value, NN_share, NN_value
请帮忙:)
我可以轻松使用任何语言,但在这种情况下,我仅限于使用 MySql 技术。
最佳答案
我们在 mysql 中创建了一个函数,它有两个参数:column_value 和我们搜索的值:
RETURN JSON_EXTRACT(value, JSON_UNQUOTE(
REPLACE(
JSON_SEARCH(
,'one',column_value
),'.id','.share'
))
)
然后我们在查询的选择部分调用它,对于我们需要的每个值:
if(json_valid(percent_split),get_share(39, percent_split),NULL) AS share39
关于mysql - 如果存在特定 id,则将 json 值提取到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57689448/