数据库查询的模糊匹配
2010-06-08 23:14
225 查看
很久以前就有写BOLG的打算,写的目的不是为了宣传自己,写――是为了自己更好的理解
废话少说,来个处女作,先写个数据库的东西吧。
最近在一些通讯项目的业务逻辑中经常用到号段表,业务逻辑中需要通过数据库查询得到号码的归属地,早些时候也看了一些“高手”的代码,太复杂了,看了后我都晕了,真难想象这些高手是怎么想出来的办法。。。。。
HR表
当电话呼入时我需要根据主叫号码判断主叫所属地区,关键的问题号段telDivision这个字段存储的内容长度是可变的,怎么办呢,有人曾用一个存储过程来解决,把主叫号码作为参数传入,再将号段表全部读出,通过游标逐个比较,看了他的代码后我觉得情况没这么糟糕,应该有捷径可寻,在google上翻了个遍,没有找到任何资料,于是决定自己动手解决这个问题,凭自己感觉和经验解决它
我们一般模糊匹配都用的是 like作条件查询,平常使用是数据库内存储的内容要多,查询条件内容少,用LIKE模糊匹配立刻解决,但我们逆向思维想一下,能不能把条件处理一下,将内容和字段换个位置呢?实践证明,可以
select * from HR where telDivision+'%' like '18993100001'
上机测试一切OK!
第一次写技术文章,写的不清楚的地方希望提出问题大家交流,不要骂我哈,不然跟你急,嘿嘿嘿。
本文出自 “linYang” 博客,请务必保留此出处http://linyang.blog.51cto.com/1220126/328618
废话少说,来个处女作,先写个数据库的东西吧。
最近在一些通讯项目的业务逻辑中经常用到号段表,业务逻辑中需要通过数据库查询得到号码的归属地,早些时候也看了一些“高手”的代码,太复杂了,看了后我都晕了,真难想象这些高手是怎么想出来的办法。。。。。
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 |
我们一般模糊匹配都用的是 like作条件查询,平常使用是数据库内存储的内容要多,查询条件内容少,用LIKE模糊匹配立刻解决,但我们逆向思维想一下,能不能把条件处理一下,将内容和字段换个位置呢?实践证明,可以
select * from HR where telDivision+'%' like '18993100001'
上机测试一切OK!
第一次写技术文章,写的不清楚的地方希望提出问题大家交流,不要骂我哈,不然跟你急,嘿嘿嘿。
本文出自 “linYang” 博客,请务必保留此出处http://linyang.blog.51cto.com/1220126/328618
相关文章推荐
- 原生ajax 实现输入框模糊查询,自动匹配数据库数据
- 数据库查询模糊匹配
- 当只有一个输入条件的时匹配数据库表中多个字段模糊查询的SQL语句
- 数据库查询模糊匹配
- 回忆数据库查询的模糊语句用到的各种符号含义及实例
- SQL中模糊查询的模式匹配
- SQL 模糊查询条件的四种匹配模式
- iOS数据持久化—数据库SQLite模糊查询
- ElasticSearch 模糊匹配查询
- 一个查询数据库所有表的存储过程(允许按表名模糊查询一级按显示数量进行分页)
- Sql server模糊查询数据库里面的表
- 网页对数据库的模糊查询
- 在当前账户下模糊查询是否有匹配的表以及定位字段是否存在、在哪个表中
- 数据库中的模糊查询
- comboBox绑定数据库、模糊查询
- hbase时间段查询、模糊匹配
- hbase时间段查询、模糊匹配
- hbase时间段查询、模糊匹配
- 声成查询的模糊匹配字符串