mysql json数组元素匹配查询问题

indispensableman 2016-07-11 09:56:38
在mysql 中存了一个json 数组(VARCHAR类型) ,形如:["2","1","3","4","5"]这种形式。我现在需要匹配查询 数组中包含元素1,2的记录。请问sql 应该如何写?
...全文
3106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BanLive 2020-07-07
  • 打赏
  • 举报
回复
select * from 表 where 字段 like '%"1"%' or 字段 like '%"2"%';
A智丨勇灬 2019-09-23
  • 打赏
  • 举报
回复
引用 8 楼 indispensableman 的回复:
引用 5 楼 ACMAIN_CHM 的回复:
find_in_set 去找 "1" 不是去找 1, 把引号加上。
我打算把字符串存储方式,改成逗号分隔的,这样我的查询就可以适用find_in_set了。圆满解决,结贴。

楼主也太不专注啦,明明存储的是json list的格式,非得改成string逗号分割,json list的数据怎么查呀
indispensableman 2016-07-11
  • 打赏
  • 举报
回复
引用 5 楼 ACMAIN_CHM 的回复:
find_in_set 去找 "1" 不是去找 1, 把引号加上。
我打算把字符串存储方式,改成逗号分隔的,这样我的查询就可以适用find_in_set了。圆满解决,结贴。
indispensableman 2016-07-11
  • 打赏
  • 举报
回复
引用 5 楼 ACMAIN_CHM 的回复:
find_in_set 去找 "1" 不是去找 1, 把引号加上。
indispensableman 2016-07-11
  • 打赏
  • 举报
回复
引用 5 楼 ACMAIN_CHM 的回复:
find_in_set 去找 "1" 不是去找 1, 把引号加上。
ACMAIN_CHM 2016-07-11
  • 打赏
  • 举报
回复
find_in_set 去找 "1" 不是去找 1, 把引号加上。
indispensableman 2016-07-11
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
find_in_set()
这个函数适用于,逗号分隔的字符串,形如:"1,2,3,4,5"。和上面我的json字符串数组形式["1","2","3","4"]还是有些不同的,不能适用。不过还是很感谢。
ACMAIN_CHM 2016-07-11
  • 打赏
  • 举报
回复
find_in_set()
indispensableman 2016-07-11
  • 打赏
  • 举报
回复
引用 1 楼 zhangbin1988 的回复:

//我只能想到这个
select * from 表 where 字段 like '%1%' and 字段 like '%2%';
稍微复杂一点,1,12,这种就有点不好用了。或者说对于这种需求,有没有更巧妙的数据库设计、查询起来比较方便呢。
ayzen1988 2016-07-11
  • 打赏
  • 举报
回复

//我只能想到这个
select * from 表 where 字段 like '%1%' and 字段 like '%2%';
zjcxc 2016-07-11
  • 打赏
  • 举报
回复
json 数据可以直接查找的嘛 set @i=json_array(1,2,3,4,5); select json_contains(@i, '[2,5]'),json_contains(@i, '[2,45]');

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧