当前位置: 代码迷 >> SQL >> 关于数据查询比较饶的有关问题,标题要长长!
  详细解决方案

关于数据查询比较饶的有关问题,标题要长长!

热度:204   发布时间:2016-05-05 15:26:17.0
关于数据查询比较饶的问题,标题要长长!!!!
我现在有一个数组,里面放了10个String的对象,我现在要查数据库,select id,xx from A where xx = '这个数组中的某个值'。
思路一:遍历数组,在循环中一个一个去查数据库,这个思路明显不可行,效率不行。
思路二,把数据遍历,然后拼接成字符串,在SQL 语句中用select * from A where xx in()的方法,但是ID与数组中的值要一一对应,更关键的是,万一这个值不存在,数据查不到,就是in里面有10个值,但是如果xx = '这个数组中的某个值'为false,那么查出来的可能不到10个,即使对应了,也要很多的遍历才可以,明显影响效率。

最后要把这个取到的ID 与 数组中的值一一对应一起来。这个也很关键,用什么关联,MAP 或者其他什么!

希望各位大虾帮忙,说说你们的思路!!!万分感谢!!!

------解决方案--------------------
select id,xx from A where xx = '这个数组中的某个值'。

直接用CHARINDEX

select id,xx from A where CHARINDEX(xx, ''这个数组')


------解决方案--------------------
1、用正则;
2、用查询函数,如INSTR、FIND_IN_SET、CHARINDEX之类的,根据你的数据库来判定使用什么函数
------解决方案--------------------
2楼已经有
select * from tt where c1 regexp 'f1|f2|f3'

函数
select * from tt where CHARINDEX(','+c1+',',',f1,f2,f3,')>0
  相关解决方案