参数2中的无效JSON文本 - MySQL 5.7.8中的json_contains

时间:2015-11-04 04:19:30

标签: mysql json mysql-5.7

我有一个数据库,其中一列是字符串的JSON(例如[" ART"," LIT"]等)。我想使用json_contains进行搜索。

然而,当我尝试:

json_contains(\`column_name`,"ART")

错误说:

  

参数2中的无效JSON文本用于函数json_contains:"无效值。"在ART'中的第0位。

请注意,json_contains并不代表" ART"中的数字,只是字符串。知道我可以做些什么来修复/解决这个问题吗?

3 个答案:

答案 0 :(得分:17)

显然,它将整数与字符串区别对待。虽然json_contains(`column_name`," 1")是一个有效的调用,但要检查它是否包含" ART",你必须使用json_contains(`column_name`,'&# 34; ART"'。)

这解决了我的问题!

答案 1 :(得分:2)

如果列名仅存储标签(一级数组),例如[“ ART”,“ LIT”,“ SPORTS”]

JSON_CONTAINS(column_name, 'ART', '$')

如果列名存储键值数组,例如{“ tag”:“ ART”,“ other”:“ NONE”}

JSON_CONTAINS(column_name, 'ART', '$.tag')

最后,如果标记值在父数组中,则需要使用以下路径:

JSON_CONTAINS(column_name, 'ART', '$.parent.tag')

https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#function_json-contains

答案 2 :(得分:0)

如果您的候选类型是字符串, 只需在候选人上加上双引号,然后重试即可。

json_contains(\`column_name`,'"ART"')

JSON_CONTAINS(target, candidate[, path])