SQLite 3.45.0 发布!-JSON 函数

时间:2024-01-23 18:26:14

SQLite 3.45.0 版本开始,所有的 JSON 函数将会使用全新的内部格式存储 JSON 数据,也就是二进制的 JSONB。这种新格式可以避免查询和更新时不必要的 JSON 数据解析,而且占用的磁盘空间更小。

新版本增加了大量处理 JSONB 参数的函数,它们和原有的 JSON 函数一一对应。例如:

select json_extract('{"Name":"SQLite", "Version":"3.45.0"}', '$.Name');
SQLite

select jsonb_extract('{"Name":"SQLite", "Version":"3.45.0"}', '$.Name');
SQLite

json_valid(x, y) 函数增加了一个可选的参数 y,用于定义 JSON 格式校验的规则。该参数的取值范围如下:

  • 0x01,输入文本严格遵循 RFC-8259 JSON 规范;
  • 0x02,输入文本遵循 JSON5 扩展规范;
  • 0x04,输入文本为遵循 JSONB 外部格式的 BLOB;
  • 0x08,输入文本为严格遵循 JSONB 内部格式的 BLOB。

参数 y 的默认值为 1,也可以是以上状态掩码的组合:

  • 1,输入文本为 RFC-8259 JSON 文本;
  • 2,输入文本为 JSON5 文本;
  • 4,输入文本大概率为 JSONB;
  • 5,输入文本为 RFC-8259 JSON 文本或者 JSONB;
  • 6,输入文本为 JSON5 文本或者 JSONB;
  • 8,输入文本严格遵循 JSONB 规范;
  • 9,输入文本为 RFC-8259 JSON 文本或者严格遵循 JSONB 规范;
  • 10,输入文本为 JSON5 文本或者严格遵循 JSONB 规范。