Oracle多关键字查询
因项目需要,在某查询页面的查询字段支持多关键字查询,支持空格隔开查询条件,故实现如下:
使用的原理是:ORACLE中的支持正则表达式的函数REGEXP_LIKE,
'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
'+' 匹配前面的子表达式一次或多次。
'( )' 标记一个子表达式的开始和结束位置。
如需要查询的关键字为“杆塔 鸟巢”
select t.defect_phenomenon, t.defect_code, t.voltage_level from sp_pd_Defect t where (regexp_like(t.defect_phenomenon, '(杆塔|鸟巢)+') or regexp_like(t.defect_code, '(杆塔|鸟巢)+') or regexp_like(t.voltage_level, '(杆塔|鸟巢)+'));
如图:
![](https://images2015.cnblogs.com/blog/531904/201701/531904-20170112170027463-598307578.png)
如需要查询的关键字为“杆塔 鸟巢 110000”
select t.defect_phenomenon, t.defect_code, t.voltage_level from sp_pd_Defect t where (regexp_like(t.defect_phenomenon, '(杆塔|鸟巢|110000)+') or regexp_like(t.defect_code, '(杆塔|鸟巢|110000)+') or regexp_like(t.voltage_level, '(杆塔|鸟巢|110000)+'));
如图:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步