日期:2014-05-18  浏览次数:20629 次

请问这种查询算法怎么实现?
数据库有个表叫MyTable, 里面有一列叫Mobile, 存储11位的手机号码。
现在MyTable里面存储了一批手机号码。

问题:举个例子,假如我输入3549,即将数据拆分成 3、5、4、9. 我如何能从MyTable中匹配包含3,5,4,9的手机号码(顺序不限,比如3,4,5,9或3,9,4,5等都一样)?

匹配结果类似:15934852491



------解决方案--------------------
应该是按匹配度排序

1、看看每个数字是不是都在字段内,个数为n(0-4)
2、看看数字的顺序符合情况,个数为(0-4)
3、看看第一个符合要求的数字的位置。

然后综上所述写个匹配度排序。
------解决方案--------------------
可不可以根據輸入的值來組SQL如:
mobile like '%3%' and mobile like '%4%' and mobile like '%5%' and mobile like '%9%'

------解决方案--------------------
先把你的字符串拆分成一个一个的,然后再去查询,where后的条件可以按照楼上的写法
------解决方案--------------------
顺序是否限制,重复是否要求

如果我输入2344
那么
15925673491 不该出来
15925643401 该出来
15956434201 也该出来?

可以先把每个号码按数字生成到1个从表b(fno号码,f9数字,fc次数):
每个不同的数字一条记录,同时填它的出现次数

然后。。。。。。。


------解决方案--------------------
探讨
引用:
可不可以根據輸入的值來組SQL如:
mobile like '%3%' and mobile like '%4%' and mobile like '%5%' and mobile like '%9%'


如果我输入2344

那么15925673491,会被匹配出来,而实际上像15925643401才会被匹配出来,因为个数也要匹配正确。