You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQLite数据库的JSON字段中提取指定值?

嘿,我来帮你搞定这个SQLite里提取JSON字段值的问题!

提取SQLite JSON字段中的特定值

首先得确认你的SQLite版本是否在3.37.0及以上——因为从这个版本开始,SQLite才引入了原生的JSON处理函数,这是最可靠的解决方案。你可以执行这条命令查看当前版本:

SELECT sqlite_version();

方法1:使用json_extract()函数(兼容3.37.0+)

这是最基础且兼容性较好的方式,语法逻辑很清晰:

-- 提取单个字段,比如lang的值
SELECT json_extract(data, '$.lang') AS lang_value
FROM your_table_name;

这里的$.lang是JSON路径表达式:$代表整个JSON对象,.lang就是你要提取的键名。如果需要一次性提取多个值,直接在SELECT语句里追加即可:

SELECT
  json_extract(data, '$.lang') AS lang,
  json_extract(data, '$.gamecd') AS gamecd,
  json_extract(data, '$.userid') AS userid,
  json_extract(data, '$.region') AS region
FROM your_table_name;

方法2:使用简化的->>操作符(兼容3.38.0+)

如果你的SQLite版本在3.38.0或更高,还可以用更简洁的语法,和MySQL的JSON提取用法类似,写起来更顺手:

-- 提取单个字段
SELECT data->>'$.lang' AS lang_value
FROM your_table_name;

提取多个值的示例:

SELECT
  data->>'$.lang' AS lang,
  data->>'$.gamecd' AS gamecd,
  data->>'$.ingamesn' AS ingamesn
FROM your_table_name;

一些重要的注意事项

  • 确保data字段里的内容是有效的JSON字符串,如果有格式错误(比如未闭合的引号、多余的逗号),这些JSON函数会返回NULL。你可以用下面的语句快速排查格式有问题的行:
    SELECT * FROM your_table_name WHERE json_valid(data) = 0;
    
  • 如果你的SQLite版本低于3.37.0,原生JSON函数就用不了了。这种情况下要么升级SQLite版本,要么只能用字符串处理函数(比如substr()、instr())硬提取,但这种方法非常脆弱,JSON结构稍微变一下就会失效,极度不推荐。

内容的提问来源于stack exchange,提问作者jamefane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:33:54