名为JSON
mysql专栏:
{"myarray":[ { "users":"82,191", type":"3" } ]}
这在表列json
上面,我想找到id为191的用户。 82工作正常。 但191个没有找到。
我的sql查询是:
SELECT id
FROM tablename
WHERE JSON_EXTRACT(json, CONCAT('$.myarray[0].users') ) IN (82) --this is working
SELECT id
FROM tablename
WHERE JSON_EXTRACT(json, CONCAT('$.myarray[0].users') ) IN (191) --but this is not working. nothing fetched. empty results.
如果json也有191,我如何获取结果?
在您的示例中,JSON_EXTRACT返回带引号的字符串“82,191”
,因此对于搜索,您可以将JSON_UNQUOTE与FIND_IN_SET组合使用,如下所示:
SELECT id
FROM tablename
WHERE FIND_IN_SET(82, JSON_UNQUOTE(
JSON_EXTRACT(json, '$.myarray[0].users')
)) > 0;
或直接(不加引号)
SELECT id
FROM tablename
WHERE FIND_IN_SET (82, json ->> '$.myarray[0].users')