mysql 5.7 json列中的where in未按预期工作

ybzsozfc  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(387)

此sql返回正确的结果:

  1. select * from `user` where `profile`->"$.year" IN ("2001")

但是当我添加多个值时

  1. select * from `user` where `profile`->"$.year" IN ("2001", "1")

返回空
在MySQL5.7的json列上,似乎“in”语句没有按预期工作?

5anewei6

5anewei61#

见文件:
11.6 json数据类型
...
json值的比较和排序
...
json值尚不支持以下比较运算符和函数:
之间
在()
最大()
最少()
刚才列出的比较运算符和函数的一个解决方法是将json值强制转换为原生mysql数值或字符串数据类型,以便它们具有一致的非json标量类型。
...
尝试:

  1. SELECT *
  2. FROM `user`
  3. WHERE CAST(`profile` -> "$.year" AS UNSIGNED) IN ("2001", "1");

见小提琴。

展开查看全部

相关问题