很久以前就有写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!
 
第一次写技术文章,写的不清楚的地方希望提出问题大家交流,不要骂我哈,不然跟你急,嘿嘿嘿。