Skip to main content

Invalid JSON text in argument 2 in mysql8

· One min read

背景

有个update_rules字段是json类型

{"type": "once", "values": []}

想用JSON_CONTAINS提取中间的once内容,发现下面这个sql一直报错:

SELECT  *  FROM  `usergroup`  WHERE JSON_CONTAINS(update_rules , 'once' , '$.type' )

报错一直是Invalid JSON text in argument 2 , 看了很久也没有看出第二个参数哪里错了

mysql官网例子 , 我看官网也是这样

解决方式

搜索了一下stackoverflow,原来字符串还要在里面加双引号

也就是'once' 改成'"once"'

完整的sql变成如下:

SELECT  *  FROM  `usergroup`  WHERE JSON_CONTAINS(update_rules , '"daily"' , '$.type' )