免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2967 | 回复: 3
打印 上一主题 下一主题

困惑,精确查询三个数字无法实现? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-13 13:10 |只看该作者 |倒序浏览
10可用积分
数据表有如下字段:

number

4-1-11-25-8-20         
6-5-17-20-71-33
5-13-11-33-09-31
1-41-12-20-52-8
8-77-11-80-1-81
......

我要查找含有这三个数字的字段:8 、1、20  (倒序顺序都没关系)

用LIKE会把11、31等有1的也查找出来,还有INSTR也不行,

用很多方法都无法实现

难道用 SELECT 查询语句无法完成吗?请各位帮忙一下。难道真的要放在PHP程序这边才能实现?

论坛徽章:
0
2 [报告]
发表于 2007-09-13 13:37 |只看该作者
查找'%-8','8-%','%-8-%,'%-1','1-%','%-1-%','%-20','20-%','%-20-%'

[ 本帖最后由 Jython 于 2007-9-13 13:38 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-09-13 13:41 |只看该作者
这种数据结构设计太差劲了。
拆成几个表再说。

论坛徽章:
0
4 [报告]
发表于 2007-09-13 13:50 |只看该作者
其实就是要写得复杂点,实现当然是可以的
分析上述数据有三种情况,我暂且把8,1,20都当成$i,那么三种情况分别为:
1: ^$i-
2: -$i-
3: -$i$

再用REGEXP来过滤,当然,要把id,也就是主键也选进来,然后三种情况嵌套。

其实楼上的说得没错,要么改变数据结构,要么用程序来实现
这种类似笛卡尔积的选择,真不适合数据库来实现!

[ 本帖最后由 justinyun 于 2007-9-13 13:54 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP