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多关键字查询的主要内容,如果未能解决你的问题,请参考以下文章

oracle 实现多字段匹配一个关键字查询语句

没索引oracle无唯一索引交换分区会丢失数据?

关于sql模糊查询(全字段)

ASP多值多字段模糊查询分页问题

oracle学习之多表查询,子查询以及事务处理

oracle 查询出 表的空间大小 占用存储空间