日期:2014-05-20  浏览次数:20639 次

一个写查询的问题。
假设数据库里有个表A 字段 b 他存的数据格式大概是这样的   1,5,10,20  。。。 就是说1啊5啊什么 对应其他表里的id什么。。先不管。
 现在假设 要查询 这个字段中 为5的,要怎么样处理呢
用like 的话有可能有 15,50 这样的。。。
java的

------解决方案--------------------
不太理解楼主的意思。是想要15,50那样的,还是只想要5啊?
只想要5的话,直接用=不行么?为什么要用like?
SQL语句的写法和你编程语言没有太大关系,你把语句拿到数据库查询分析器里能用,放到程序里执行肯定也是一样的。
------解决方案--------------------
引用:
引用:不太理解楼主的意思。是想要15,50那样的,还是只想要5啊?
只想要5的话,直接用=不行么?为什么要用like?
SQL语句的写法和你编程语言没有太大关系,你把语句拿到数据库查询分析器里能用,放到程序里执行肯定也是一样的。

一个字段值 5= 1,5,10,20 ?
用like 可能会把包含5的这样的查出来。其实那是不要的……

我更糊涂了,楼主说明白一点吧,你的1,5,10,20代表什么?一个字符串?
------解决方案--------------------
估计是一个字段里面存储了1,2,3,5,15,20 然后需要找到里面包含5的?是这个意思吗?
如果是的话可以这样吗 = "5" or like "%,5,%" or like "5,%" or like "%,5";根据你的分隔符
------解决方案--------------------
我在风中凌乱了,LZ什么意思?没太懂
------解决方案--------------------
我正在做的项目基本都是这么做的 但是根据这个分割的有专门的查询方法

如楼主的需求 oracle 可写如下查询一次查出来

SELECT * FROM A

   where instr(','
------解决方案--------------------
A.b
------解决方案--------------------
',', ','
------解决方案--------------------
5
------解决方案--------------------
',') > 0
------解决方案--------------------
引用:
这个是一对多关系,  里面数字分别代表一样东西,是其他表里的id

你的字段属性是什么?字符型?
那就用like吧,就是条件写具体一点就行了
引用:
估计是一个字段里面存储了1,2,3,5,15,20 然后需要找到里面包含5的?是这个意思吗?
如果是的话可以这样吗 = "5" or like "%,5,%" or like "5,%" or like "%,5";根据你的分隔符

这个就可以啊
------解决方案--------------------
不知道楼主用的是什么数据库。如果用的是oracle10g的话可以直接用oracle的正则。
如果不是的话自己写个函数去解析这个。
------解决方案--------------------
引用:
我正在做的项目基本都是这么做的 但是根据这个分割的有专门的查询方法

如楼主的需求 oracle 可写如下查询一次查出来

SELECT * FROM A

   where instr(','
------解决方案--------------------
A.b
------解决方案--------------------
',', ','
------解决方案--------------------
5
------解决方案--------------------
',') > 0



oracle  这个  没有别人说的那么复杂 这个就是专门处理这个问题的!楼主求测试!分个求,正则个求,自己写个求的函数
------解决方案--------------------
LZ这个问题我遇到过,
1、如果1,5,10,20  。。。 这个是序列号什么的,可以在插入数据库时将值设置大一些,不要让这些数据之间有重复,比如1000001,1000005,1000010。。。。。
2、插入数据库是首尾带上个逗号,比如,1,5,10,20 ,  然后like时就是 like '%,xxx,%',也就没问题了。
3、可以自己写个函数将1,5,10,20分割开,然后用exists。