我有一个数据库,其中一列是字符串的JSON(例如[" ART"," LIT"]等)。我想使用json_contains
进行搜索。
然而,当我尝试:
json_contains(\`column_name`,"ART")
错误说:
参数2中的无效JSON文本用于函数json_contains:"无效值。"在ART'中的第0位。
请注意,json_contains
并不代表" ART"中的数字,只是字符串。知道我可以做些什么来修复/解决这个问题吗?
答案 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"')