问题描述
table1-------------字段名user_Arr id值12,34,56,66 134,56 2------------------------------------------------------------------table2------------字段名user_Id值123456select user_id from table2 where user_id in (select user_arr from table1 where id =1)希望达到这种效果,该处理table1的字段值?select user_id from table2 where user_id in ('12,34,56,66') 问题补充:我的一个字段的值是12,34,56,66我需要查另一个表,希望能in这张表的字段。但是因为是字段不是字符串,所以in不出来。
解决方案
我以前做过oracle 中的 split 功能,它是通过正则表达式来进行实现的(当然你也可以写个函数来搞定)。引用 select dbms_lob.substr (regexp_substr('abc,def,ggg,1,2,3,4,5', '[^,]+', 1, x.n)) as player_guid from dual a, (select rownum n from dual connect by rownum < 100) x 这里利用了函数 regexp_substr和connect by其中rownum < 100 会连接限制split的次数 '[^,]+'为split拆分的正则表达式,这里为【,】逗号。
解决方案二:
引用嗯。但是你可以试试就知道有多大区别了 你这个方法确实很好
解决方案三:
引用SELECT A.USER_ID FROM TABLE2 A, TABLE1 B WHERE INSTR(','||B.USER_ARR||',',','|| A.USER_ID || ',') > 0 and id = '1' 你这其实就是前后加逗号,然后看是否在里面
解决方案四:
oracle 的in函数使用必须和字段的类型匹配,你的user_id如果是string的话就必须写成 in ('12','22','33')如果是int的就可以写成 in (12,22,33)
解决方案五:
lz和ls的假如搞定了 最后分享一下啊。
解决方案六:
ibatits 不是支持原生 sql 的吗,所以当然可以使用了啊。你要分割的数据也不多,所以,效率不会受到什么大的影响吧。
解决方案七:
琢磨一下我的写法。程序只需要控制把userid前后加一个逗号就行了。
解决方案八:
引用但是数据库,还是把他识别为一个字段。不是字符串 没明白你说的 “把他还识别为一个字段” 是什么意思。select user_id||'' as userId from table2; 这样子的话,查出来的 userId 的值肯定是一个字符串啊
解决方案九:
把第一个表的"12,34,56,66"这个字段存储成",12,34,56,66,"这样的,前后都加引号,然后呢你就用 select user_id from table2 where user_id like '%,12,34,56,66,%' user_id用程序拼接成user_id=","+user_id+","
解决方案十:
引用怎么把查出来的字段,变成字符串这么干就行select user_id||'' from table2;
解决方案十一:
那么按照我的就可以变成 类似 ",56," like '%,12,34,56,66,%' 看懂了吗
解决方案十二:
刚说错了然后可以用select user_id from table2 where user_id like '%,12,34,56,66,%' 里面的user_id=","+user_id+","
解决方案十三:
引用我需要查另一个表,希望能in这张表的字段。 那就你上面的几个数字来说,如果你想查 34 这个,那么是不是 table1 中的两条数据都是符合要求的呢?即, 34 in ('12,34,56,66') 是成立的, 34 in ('34,56')也是成立。先别管我这么写语法正不正确。
解决方案十四:
哦 明白了。我做过类似的,用sql不行的,我是这么做的,把第一个表的"12,34,56,66"这个字段存储成",12,34,56,66,"这样的,前后都加引号,然后呢你就用select user_id from table2 where user_id like '%,12,34,56,66,%'就行了。
解决方案十五:
你用的是什么数据库呢?
解决方案:
select user_id from table2 where user_id in (select user_arr from table1 where id =1) 楼主你这句是对的啊。你到底想问啥了。
解决方案:
lz 我没太看明白,不知道你要问什么,能否说清楚点(貌似你都写出来了)