您的位置:首页 > 数据库

数据库查询的模糊匹配

2010-06-08 23:14 225 查看
很久以前就有写BOLG的打算,写的目的不是为了宣传自己,写――是为了自己更好的理解


废话少说,来个处女作,先写个数据库的东西吧。

最近在一些通讯项目的业务逻辑中经常用到号段表,业务逻辑中需要通过数据库查询得到号码的归属地,早些时候也看了一些“高手”的代码,太复杂了,看了后我都晕了,真难想象这些高手是怎么想出来的办法。。。。。

HR表

idareaCode areaName telDivision
1028 成都198028
20839广元1891234
30931兰州1336945
40931兰州1891931
50931兰州1898931
60930临夏1890930
70938天水 1980938
当电话呼入时我需要根据主叫号码判断主叫所属地区,关键的问题号段telDivision这个字段存储的内容长度是可变的,怎么办呢,有人曾用一个存储过程来解决,把主叫号码作为参数传入,再将号段表全部读出,通过游标逐个比较,看了他的代码后我觉得情况没这么糟糕,应该有捷径可寻,在google上翻了个遍,没有找到任何资料,于是决定自己动手解决这个问题,凭自己感觉和经验解决它

我们一般模糊匹配都用的是 like作条件查询,平常使用是数据库内存储的内容要多,查询条件内容少,用LIKE模糊匹配立刻解决,但我们逆向思维想一下,能不能把条件处理一下,将内容和字段换个位置呢?实践证明,可以

select * from HR where telDivision+'%' like '18993100001'

上机测试一切OK!

第一次写技术文章,写的不清楚的地方希望提出问题大家交流,不要骂我哈,不然跟你急,嘿嘿嘿。

本文出自 “linYang” 博客,请务必保留此出处http://linyang.blog.51cto.com/1220126/328618
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: