1. 程式人生 > >關於ORACLE中使用LIKE進行多欄位模糊匹配的一種解決思路

關於ORACLE中使用LIKE進行多欄位模糊匹配的一種解決思路

      在ORACLE使用過程中經常會碰到查詢一張表裡的相關資訊而需要用多個欄位對其中一列進行模糊匹配的情況,最常見的做法是使用or連線多個查詢子語句。使用這個方法在匹配欄位多時就會顯得很繁瑣且容易出錯和遺漏。比如我工作中要在表A中查詢對應列puinfo中前六位為以下選項的內容

122221
122226
122231
122236
122241
122246
122251
122256
122261
122211
122216
122201
122203
122227
122233    

採用以上方法,查詢語句就只能寫成select * from A  t where  t.puinfo  like '122221%' or    t.puinfo  like '122226%' or   t.puinfo  like '122231%' or   .....

後面省略12個子語句。

    我想提供的一種思路是這樣的在oracle資料庫裡建一個臨時表用於儲存這些要匹配的欄位,然後在查詢語句裡只讓要匹配的列跟臨時表的對應的這個欄位進行匹配。例如我新建了一個臨時表test 並在其puinfo列裡儲存了以上15個要用於匹配的欄位。這樣查詢語句就可以寫成select * from A t,test b where t.puinfo like b.puinfo||'%'