oracle多关键词查询

  • 多关键词查询

    遇到一个需求,查询某个字段包含“建行”或“招行”或“工商银行”的数据。简单来说就是多关键词匹配。

    一开始想到的解决方案无非切割循环,然后用or拼接sql,后来觉得太过麻烦,就百度了一下。

    目前解决方案:利用oracle REGEXP_LIKE函数。

    例如:

      select 1 from dual where REGEXP_LIKE('上海不夜城', ‘上|无’); 

      由于“上海不夜城”包含“上”就可以查询出来

     实际应用:

      有张表 t_set 有个字段 keyword存的关键词,多个用英文逗号拼接,personId设置人id

      另一张表,t_news 有个字段title存的新闻标题。查询新闻表中标题某人关注的关键词的数据

       select * from t_news n

       where exists(select 1 from t_set where personId = ? and REGEXP_LIKE(n.title, replace(keyword,',','|')));

扫描二维码关注公众号,回复: 5103706 查看本文章
  •  多分组分别排序

    有一个学生表,有班级class、年级grade两字段,根据班级年级分组求人数倒序。

    希望得到的结果,先根据年级总人数倒序,再根据各年级的班级人数倒序。

    

    sql实例:

       select grade,class,count(1) studentNum

       from t_student

       group by grade,class

       order by sum(count(1))over(partition by grade) desc, studentNum desc

    

猜你喜欢

转载自www.cnblogs.com/jevilay/p/10330257.html