暂无图片
ob JSON_EXTRACT 函数 where对比时错误
我来答
分享
风轻云淡
2023-12-10
ob JSON_EXTRACT 函数 where对比时错误

使用JSON_EXTRACT的值进行weher对比时报错,SQL Error [3141] [22001]: Data truncation: Invalid JSON text in argument.

SQL:
select * from t_scene s

where JSON_EXTRACT(s.device_conf,’$.Command.agentId’) like ‘%6bc03cd7f1a948e29f8520b7943ec4c%’

【附件】

2023-01-09_15-48_03_48_53

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

定位过程(以zy表为例, 其中doc列为json字段):

  1. select * from zy where json_valid(doc) = 0; 找出 不合法的json记录
  2. 找出的json记录是空串(‘’)
  3. mysql/ob 的json_extract对待空串都是返回错误码

    1673332507838_lQLPJx2BM6DCx6DNAVLNBaCw_F-k2CuhFx4DuDb1asDeAA_1440_338

解决建议:

  1. 当前是用text来存储json数据,数据插入的时候,json数据没有校验,可能有脏数据(这个问题的原因,schmea上device_conf默认是NULL,应该是用户主动插入的一个空串)
  2. 建议后续使用json类型来存储json数据,存储空间/计算效率/数据正确性都比较优
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏