我将有效的 JSON 对象存储在名为
diff
的列中 - 下面是 JSON 对象的示例:
{
"values_changed": {
"root['item_status_code']": {
"new_value": "(",
"old_value": "-"
}
}
}
我承认密钥的名称
root['item_status_code']
是一个糟糕的选择,应该使用更简单的密钥——但是它仍然是有效的 JSON,我不能简单地轻松更改底层数据。
我应该能够编写这样的查询来提取JSON对象中键
new_value
的值,但我似乎无法让转义字符按预期工作。
SELECT json_extract(diff, '$.values_changed.root['item_status_code'].new_value')
FROM items_diffs
WHERE json_extract(diff, '$.values_changed') IS NOT NULL;
显然,这不是正确的 SQL 语法,并且会失败,但我似乎无法找出正确编写此代码的方法。
这里有一个数据的摆弄: https://www.db-fiddle.com/f/dN7qHjbeqxAxmfDHdDBDMU/2
我想我明白了——我在引用这个密钥时遇到了麻烦,但我想我终于明白了......
--
json_extract(
diff,
'$.values_changed."root[''item_status_code'']".new_value'
) AS new_value