ob JSON_EXTRACT 函数 where对比时错误

【 使用环境 】 测试环境
【 OB or 其他组件 】OB
【 使用版本 】3.2.3.3
【问题描述】使用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%’

【附件】

建表语句,insert语句能发一下吗?我们这边验证一下

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

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

解决建议:

  1. 当前是用text来存储json数据,数据插入的时候,json数据没有校验,可能有脏数据(这个问题的原因,schmea上device_conf默认是NULL,应该是用户主动插入的一个空串)
  2. 建议后续使用json类型来存储json数据,存储空间/计算效率/数据正确性都比较优
1 个赞