用php做模糊而又精确的查找
2011-08-26 10:14
239 查看
模糊与精确是相悖的,但今天我不是在谈什么是相悖论,看下边的提问.
数据库结构格式如下:
id | cid
--------------------------------
1| ,4,5,7,
--------------------------------
3| ,4,5,8,
--------------------------------
4| ,5,4,
--------------------------------
6| ,5,4,7,8,
--------------------------------
7| ,8,4,5,7,9,
--------------------------------
8| ,7,9,4,5,8,10,
我想请教一下
假如我post过来的cid值分别是4和5,那我如何精确的查询到id=4的这条数据?
同理,假如我post过来的cid值分别是4,5,7,8的时候,那我如何精确的查询到id=6的这条数据?
这里请注意:
cid这一列的数据排列是非固定式的,没规律可循,唯一能够确认的就是不会重复出现同一个值
还有就是用like写法and链接这种方式我试过了,不够精确.例如...where cid like'%,4,%' and cid like'%,5,%'
解决方法如下:
道听途说不如自己親自測試,剛剛做了一個測試,結果已經出來了
我分别用了三种方法做测试,测试的时候是循环20000次提取数据库里的数据,结果如下:
SQL code
//1770 ms~1800 ms
Select id,type From hotel where type like'%|21|%'and type like'%|101|%'and LENGTH(type)=length('|21|101|')
SQL code
//1760 ms~1810 ms
Select id,type From hotel where locate('|21|',type)>0and locate('|101|',type)>0and LENGTH(type)=length('|21|101|')
SQL code
//CPU直接100%,瀏覽器挂掉
Select id,type From hotel where type REGEXP concat('.*[',replace('21,101',',','|'),'].*')
数据库结构格式如下:
id | cid
--------------------------------
1| ,4,5,7,
--------------------------------
3| ,4,5,8,
--------------------------------
4| ,5,4,
--------------------------------
6| ,5,4,7,8,
--------------------------------
7| ,8,4,5,7,9,
--------------------------------
8| ,7,9,4,5,8,10,
我想请教一下
假如我post过来的cid值分别是4和5,那我如何精确的查询到id=4的这条数据?
同理,假如我post过来的cid值分别是4,5,7,8的时候,那我如何精确的查询到id=6的这条数据?
这里请注意:
cid这一列的数据排列是非固定式的,没规律可循,唯一能够确认的就是不会重复出现同一个值
还有就是用like写法and链接这种方式我试过了,不够精确.例如...where cid like'%,4,%' and cid like'%,5,%'
解决方法如下:
道听途说不如自己親自測試,剛剛做了一個測試,結果已經出來了
我分别用了三种方法做测试,测试的时候是循环20000次提取数据库里的数据,结果如下:
SQL code
//1770 ms~1800 ms
Select id,type From hotel where type like'%|21|%'and type like'%|101|%'and LENGTH(type)=length('|21|101|')
SQL code
//1760 ms~1810 ms
Select id,type From hotel where locate('|21|',type)>0and locate('|101|',type)>0and LENGTH(type)=length('|21|101|')
SQL code
//CPU直接100%,瀏覽器挂掉
Select id,type From hotel where type REGEXP concat('.*[',replace('21,101',',','|'),'].*')
相关文章推荐
- 用php做模糊而又精确的查找
- 精确查找PHP WEBSHELL木马 修正版
- T-SQL 模糊和精确查找
- Solr模糊和精确查找
- 精确查找PHP WEBSHELL木马的方法(1)
- OFBIZ框架的精确查找和模糊查找
- VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)
- 精确查找PHP WEBSHELL木马的方法(1)
- VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)
- 精确查找PHP WEBSHELL木马 修正版
- C# 查找、结束进程 - 通过进程名精确、模糊查找、结束进程
- VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)
- Lucene全文搜索 分组,精确查找,模糊查找
- 用命令行操作遍历目录,查找文件的PHP代码
- php的数组、排序、查找
- GPGPU OpenCL 精确字符串查找
- C#中如何实现在TreeView模糊查找某一节点
- 转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果
- php字符查找 【转】
- 剑指offer---查找链表倒数第K个结点(PHP)