數據庫查詢的模糊匹配

好久之前就有寫BOLG的打算,寫的目的不是爲了宣傳本身,寫——是爲了本身更好的理解
廢話少說,來個×××做,先寫個數據庫的東西吧。
 
最近在一些通信項目的業務邏輯中常常用到號段表,業務邏輯中須要經過數據庫查詢獲得號碼的歸屬地,早些時候也看了一些「高手」的代碼,太複雜了,看了後我都暈了,真難想象這些高手是怎麼想出來的辦法。。。。。
         
HR表
 
 id areaCode  areaName  telDivision 
 1 028   成都 198028 
 2  0839  廣元  1891234
 3  0931  蘭州  1336945
 4  0931  蘭州  1891931
 5  0931  蘭州  1898931
 6  0930  臨夏  1890930
 7  0938 天水   1980938
 
當電話呼入時我須要根據主叫號碼判斷主叫所屬地區, 關鍵的問題號段telDivision這個字段存儲的內容長度是可變的,怎麼辦呢,有人曾用一個存儲過程來解決,把主叫號碼做爲參數傳入,再將號段表所有讀出,經過遊標逐個比較,看了他的代碼後我以爲狀況沒這麼糟糕,應該有捷徑可尋,在google上翻了個遍,沒有找到任何資料,因而決定本身動手解決這個問題,憑本身感受和經驗解決它
 
咱們通常模糊匹配都用的是 like做條件查詢,日常使用是數據庫內存儲的內容要多,查詢條件內容少,用LIKE模糊匹配馬上解決,但咱們逆向思惟想一下,能不能把條件處理一下,將內容和字段換個位置呢?實踐證實,能夠
 
      select *  from HR where telDivision+'%'  like '18993100001'
 
上機測試一切OK!
 
第一次寫技術文章,寫的不清楚的地方但願提出問題你們交流,不要罵我哈,否則跟你急,嘿嘿嘿。
相關文章
相關標籤/搜索