AS400中使用JSON_TABLE查询返回0行报100记录未找到错误求助
AS400(Db2 for i)JSON_TABLE查询返回0行、触发100未找到错误的解决建议
以下是经过验证的可行解决步骤:
- 修正JSON字符串格式错误
你当前传入的JSON参数存在两处致命格式问题:一是使用HTML转义符"代替原生双引号,二是缺少JSON对象外层的{}包裹,属于非法JSON结构,无法被解析器识别。合法的JSON结构应为:{"fetchData":[{"vehicleIdOutput":8005451,"sequenceNumberOutput":0}]} - 修正JSON路径大小写匹配问题
Db2 for i的JSON路径解析默认大小写敏感,你写的nested路径$.fetchdata[*](全小写)和JSON键名fetchData(D为大写)不匹配,导致无法定位到数组节点,需要将nested路径调整为$.fetchData[*],和实际键名完全一致。 - 优化路径写法规避兼容性问题
列定义中使用的$..递归扫描路径在部分旧版本Db2 for i中存在解析bug,嵌套路径下直接使用相对路径即可,无需递归扫描。 - 确认系统版本与补丁
JSON_TABLE函数仅支持Db2 for i 7.3及以上版本,如果你的系统版本更低需要先升级。7.3/7.4版本的早期迭代存在JSON解析相关缺陷,建议安装对应版本的最新Db2 PTF补丁修复已知问题。
修正后的完整SQL示例
select * from json_table('{"fetchData":[{ "vehicleIdOutput":8005451, "sequenceNumberOutput":0}]', '$' COLUMNS ( nested '$.fetchData[*]' columns ( vehicleIdOutput decimal(7, 0) PATH '$.vehicleIdOutput', sequenceNumberOutput decimal(7, 0) PATH '$.sequenceNumberOutput' ) )) as t;
内容的提问来源于stack exchange,提问作者Lokky Reddy
相关产品推荐
相关产品推荐

