可以用数组对一个字符串字段做模糊查找么,就是in和like混用?

张天星 2018-12-25 12:05:24
有一个File表,表中有一个Path字段,字段的内容是这样的:
,1,2,3,
,1,3,4,
,1,2,
,1,4,
,1,5,6,7,
,2,3,4,

大概就是这种类型的,字符串,用,分割的路径字段。
然后查询条件是,
传入一个数组,数组元素是:
,1,2,
,2,3,
,5,6,
,1,3,
,2,4,5,
大概是这样的,
有没有办法通过in和Like混用,将,可以匹配数组的所有数据查找出来?用模糊查找?
...全文
2027 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuorocdarocpeng 2020-07-15
  • 打赏
  • 举报
回复
引用 6 楼 叶遮沉阳 的回复:
可以使用正则实现,代码如下:

select * from table d 
where d.path REGEXP '(.*,2,.*)|(.*,3,.*)';
.* 表示0个或多个字符 | 表示或的关系
select * from table d where d.path ~*'(.*,2,.*)|(.*,3,.*)';
张天星 2019-02-05
  • 打赏
  • 举报
回复
引用 6 楼 叶遮沉阳 的回复:
可以使用正则实现,代码如下:

select * from table d
where d.path REGEXP '(.*,2,.*)|(.*,3,.*)';


.* 表示0个或多个字符
| 表示或的关系

嗯,正则确实符合需求,不过。。应该不会这么用吧。
如果有这种需求。。就说明设计不合理了
叶遮沉阳 2019-01-16
  • 打赏
  • 举报
回复
可以使用正则实现,代码如下:

select * from table d 
where d.path REGEXP '(.*,2,.*)|(.*,3,.*)';
.* 表示0个或多个字符 | 表示或的关系
张天星 2019-01-05
  • 打赏
  • 举报
回复
引用 4 楼 张天星 的回复:
其实呢,就是字面意思。
SELECT * FROM
table d
WHERE
d.path = 1 or d.path = 2 or d.path=3
这样的or语句,可以写成
d.path in (1,2,3)
那么,
d.DepPath LIKE "%,2,%" or d.DepPath LIKE "%,3,%"
这样的语句,有没有办法简写

。。。我记得当初学sql的时候有听过,不能混用。。我好像不是第一个想到这个疑问的。很久的事情了。。
然后,上两周我脑子一热,直接把这个问题给抛上来了。。。期待有个不一样的答案。。。
张天星 2019-01-05
  • 打赏
  • 举报
回复
其实呢,就是字面意思。
SELECT * FROM
table d
WHERE
d.path = 1 or d.path = 2 or d.path=3
这样的or语句,可以写成
d.path in (1,2,3)
那么,
d.DepPath LIKE "%,2,%" or d.DepPath LIKE "%,3,%"
这样的语句,有没有办法简写
kampoo 2018-12-26
  • 打赏
  • 举报
回复
考虑FULL-TEXT,这种混合查询很有效,逗号可以被正确解析,一般英文单词很有效。不过没有试过是否支持简单数字。
  • 打赏
  • 举报
回复
看不太明白,你能不能把源数据,条件,以及你想要的结果集。 都用数据展示出来。
吉普赛的歌 2018-12-25
  • 打赏
  • 举报
回复
对, 把表结构脚本、测试数据、想要的结果全部贴出来。

56,912

社区成员

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

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