因項目需要,在某查詢頁面的查詢字段支持多關鍵字查詢,支持空格隔開查詢條件,故實現如下:

使用的原理是: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)+'));
如圖:

