假设数据库里有个表A 字段 b 他存的数据格式大概是这样的 1,5,10,20 。。。 就是说1啊5啊什么 对应其他表里的id什么。。先不管。
现在假设 要查询 这个字段中 为5的,要怎么样处理呢
用like 的话有可能有 15,50 这样的。。。
java的
5LZ这个问题我遇到过,
1、如果1,5,10,20 。。。 这个是序列号什么的,可以在插入数据库时将值设置大一些,不要让这些数据之间有重复,比如1000001,1000005,1000010。。。。。
2、插入数据库是首尾带上个逗号,比如,1,5,10,20 , 然后like时就是 like '%,xxx,%',也就没问题了。
3、可以自己写个函数将1,5,10,20分割开,然后用exists。我在风中凌乱了,LZ什么意思?没太懂我正在做的项目基本都是这么做的 但是根据这个分割的有专门的查询方法
如楼主的需求 oracle 可写如下查询一次查出来
SELECT * FROM A
where instr(','不太理解楼主的意思。是想要15,50那样的,还是只想要5啊?
只想要5的话,直接用=不行么?为什么要用like?
SQL语句的写法和你编程语言没有太大关系,你把语句拿到数据库查询分析器里能用,放到程序里执行肯定也是一样的。
你的字段属性是什么?字符型?
那就用like吧,就是条件写具体一点就行了
这个就可以啊估计是一个字段里面存储了1,2,3,5,15,20 然后需要找到里面包含5的?是这个意思吗?
如果是的话可以这样吗 = "5" or like "%,5,%" or like "5,%" or like "%,5";根据你的分隔符',') > 0A.b',', ','',', ','
我更糊涂了,楼主说明白一点吧,你的1,5,10,20代表什么?一个字符串?A.b不知道楼主用的是什么数据库。如果用的是oracle10g的话可以直接用oracle的正则。
如果不是的话自己写个函数去解析这个。',') > 0
oracle 这个 没有别人说的那么复杂 这个就是专门处理这个问题的!楼主求测试!分个求,正则个求,自己写个求的函数