sql问题求大神解题 急急急

表A有一个字段是refobjid 里面 存的是objid 以逗号隔开,比如1,2,4
表B存的是对象 其中有objid 跟表A的refobjid关联,

现在想通过表A的objid查到 refobjid 然后查出 表B中的 几个对象,求解,
用in函数不行 因为 refobjid查出来的是字符串 不是数组。

标准SQL结局不了你的问题,考虑可移植性的话你需要分拆为两次进行查询

否则可以考虑使用数据库特性
如MySQL的find_in_set,参考@kony1314的回复

https://blog.csdn.net/mango_love/article/details/51222512
你用这个代码,新建一个函数,然后查询的时候调用这个函数ab表关联试试

从A表查出refobjid后,使用
select * from B where find_in_set(objid,refobjid);

你需要分多次查询,第一次用表A的objId查出相应的refobjid ,用String.split函数用逗号作为separator将“1,2,4”分割成数组,再使用in查询

Select * From 表A,表B Where CharIndex(','+Cast(表B.objid As VarChar(50))+',',','+表A.refobjid+',')>0

我测试过,是可以查出结果。只是灵活运用CharIndex函数而已。

select * from B inner join A on A.refobjid like B.id where A.id=?

like后面用sql拼接函数,前后加个%号

用like % 模糊查询匹配应该可以

表A中的refobjid 用逗号分隔,然后再行转列,就可以和B表关联了。
eg:col1,refobjid
1, 1,2,4
2, 3,5,6
行转列之后为:
col1,refobjid
1, 1
1, 2
1, 4
2, 3
2, 5
2, 6

用REGEXP, 比如
SELECT * FROM B b WHERE CONCAT(';',b.objid ,';') REGEXP (CONCAT(';',REPLACE('1,2,4',',',';|;'),';'));

如果需要连接的,自行连接也是一样的!!!!!!

用的舒服的话给个分呗!!!

楼主是用的 MS SQL吧,那应该用我之前5楼给的语句就行:Select * From 表A,表B Where CharIndex(','+Cast(表B.objid As VarChar(50))+',',','+表A.refobjid+',')>0