Ale*_*als 15 mysql json mysql-5.7
我有一个数据库,其中一列是字符串的JSON(例如["ART","LIT"]等).我想用它来搜索它json_contains.
但是,当我尝试:
json_contains(\`column_name`,"ART")
Run Code Online (Sandbox Code Playgroud)
它错误地说:
参数2中的无效JSON文本用于函数json_contains:"无效值".在'ART'的第0位.
请注意,json_contains"ART"中的数字不会出错,只能使用字符串.知道我可以做些什么来修复/解决这个问题?
Ale*_*als 23
显然,它将整数与字符串区别对待.虽然json_contains(`column_name`,"1")是一个有效的调用,但要检查它是否包含"ART",你必须使用json_contains(`column_name`,'"ART"').
这解决了我的问题!
如果列名称仅存储标签(一个级别的数组),例如[“ ART”,“ LIT”,“ SPORTS”]
JSON_CONTAINS(column_name, 'ART', '$')
Run Code Online (Sandbox Code Playgroud)
如果列名存储键值数组,例如{“ tag”:“ ART”,“ other”:“ NONE”}
JSON_CONTAINS(column_name, 'ART', '$.tag')
Run Code Online (Sandbox Code Playgroud)
最后,如果标记值在父数组中,则需要使用以下路径:
JSON_CONTAINS(column_name, 'ART', '$.parent.tag')
Run Code Online (Sandbox Code Playgroud)
https://dev.mysql.com/doc/refman/8.0/zh-CN/json-search-functions.html#function_json-contains