SQLite json_extract() 转义有效 JSON 对象键上的字符

问题描述 投票:0回答:1

我将有效的 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

sql json sqlite
1个回答
0
投票

我想我明白了——我在引用这个密钥时遇到了麻烦,但我想我终于明白了......

--
json_extract(
    diff,
    '$.values_changed."root[''item_status_code'']".new_value'
) AS new_value
© www.soinside.com 2019 - 2024. All rights reserved.