我有一个数据库,其中一列是字符串的JSON(例如[“ART”,“LIT”]等)。我想用json_contains
搜索它。
但是,当我尝试:
json_contains(\`column_name`,"ART")
它错误地说:
参数2中的无效JSON文本用于函数json_contains:“无效值”。在'ART'的第0位。
请注意,json_contains
不会出现“ART”中的数字错误,只是字符串。知道我可以做些什么来修复/解决这个问题?
显然,它将整数与字符串区别对待。虽然json_contains(`column_name`,“1”)是一个有效的调用,但要检查它是否包含“ART”,你必须使用json_contains(`column_name`,'“ART”')。
这解决了我的问题!
如果列名称只存储标记(一级数组),如[“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
如果您的候选人类型是字符串,只需在候选人上添加双引号然后再试一次。
json_contains(\`column_name`,'"ART"')