好久之前就有寫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!
第一次寫技術文章,寫的不清楚的地方但願提出問題你們交流,不要罵我哈,否則跟你急,嘿嘿嘿。