此sql返回正确的结果:
select * from `user` where `profile`->"$.year" IN ("2001")
但是当我添加多个值时
select * from `user` where `profile`->"$.year" IN ("2001", "1")
返回空在MySQL5.7的json列上,似乎“in”语句没有按预期工作?
5anewei61#
见文件:11.6 json数据类型...json值的比较和排序...json值尚不支持以下比较运算符和函数:之间在()最大()最少()刚才列出的比较运算符和函数的一个解决方法是将json值强制转换为原生mysql数值或字符串数据类型,以便它们具有一致的非json标量类型。...尝试:
SELECT *FROM `user`WHERE CAST(`profile` -> "$.year" AS UNSIGNED) IN ("2001", "1");
SELECT *
FROM `user`
WHERE CAST(`profile` -> "$.year" AS UNSIGNED) IN ("2001", "1");
见小提琴。
1条答案
按热度按时间5anewei61#
见文件:
11.6 json数据类型
...
json值的比较和排序
...
json值尚不支持以下比较运算符和函数:
之间
在()
最大()
最少()
刚才列出的比较运算符和函数的一个解决方法是将json值强制转换为原生mysql数值或字符串数据类型,以便它们具有一致的非json标量类型。
...
尝试:
见小提琴。