有一个字符串为names:'aaa','ccc','zzz';
还有一个表info,两个字段:id和name;
id    name
0     aaa
0     bbb
0     ccc
0     ddd
0     eee
我查询names的各子串是否都在表info中,有就保留,没有就去掉;
比如上面的查询结果为:'aaa','ccc',因为表info中没有'zzz',所以就去掉了。
有没有简单的查询方法,谢谢。

解决方案 »

  1.   

    数据库是pgsql;
    我现在是用程序把串拆开来分别查询的,不知有没有简单的sql查询方法。
      

  2.   

    create table info(id int default 0,name varchar(255));
    insert into info(name) 
    values('aaa'),
    ('bbb'),
    ('ccc'),
    ('ddd'),
    ('eee');select * from info where name in ('aaa','ccc','zzz');query result(2 records)
    id name 
    0 aaa 
    0 ccc drop table info;
      

  3.   

    我这个不知道满足你的要求不:
    把字符串为names:'aaa','ccc','zzz'先构成一个表names,一个字段name
    再select name from names,info where names.name=info.name
    这样查找出来的就是aaa,ccc
    其实楼上兄弟的方法已经不错了,我也是这样想的,不过人家帖了我就不好意思再说咯~_~,还
    要谢谢楼上yueliangdao0608((深圳PHPER,MSN:[email protected])刚帮我解决了一个小问题
      

  4.   

    谢谢各位。
    yueliangdao0608((深圳PHPER,MSN:[email protected])) 方法还不错,只是不知道查询效率怎么样。
      

  5.   

    现在的情况是:
    字符串names是表abc的一个字段,还能用“yueliangdao0608((深圳PHPER,MSN:[email protected])) ”说的查询方法吗?
      

  6.   

    你给NAME字段建一个索引就块了。
      

  7.   

    yueliangdao0608((深圳PHPER,MSN:[email protected])的方法不错。
    从中得到启示,可考虑另一种方法:写一个存储过程,循环依次取出含有names中各数据的记录。用in相当于是循环了表中每一条记录,这样写存储过程是循环要找的各字符串。
      

  8.   

    yueliangdao0608((深圳PHPER,MSN:[email protected])) 这个方法似乎没达到贴主的要求,贴主意思是给出一个参数NAMES,其中包含多个字符串,需要到NAME数据表中循环遍历只否存在相关name字段值,结果是返回存在的字符串集