Oracle多关键字查询
Posted RyanChan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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, \'(杆塔|鸟巢)+\'));
如图:
如需要查询的关键字为“杆塔 鸟巢 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)+\'));
如图:
以上是关于Oracle多关键字查询的主要内容,如果未能解决你的问题,请参考以下文章