SQL与子查询一样

时间:2013-06-18 19:57:38

标签: sql subquery wildcard

我怎样才能做到这一点?

SELECT * 
FROM   item 
WHERE  item_name LIKE '%' 
                      || (SELECT equipment_type 
                          FROM   equipment_type 
                          GROUP  BY equipment_type) 
                      || '%' 

内部子查询返回一个字符串列表,如'''test''aal',我想从item表中选择item_name与子查询返回值类似的所有项。我需要有外卡。

是否可以使用通配符但是使用IN sql命令?

4 个答案:

答案 0 :(得分:16)

您可以使用INNER JOIN

SELECT I.* 
FROM item I
INNER JOIN (SELECT equipment_type 
            FROM equipment_type 
            GROUP BY equipment_type) E
    ON I.item_name LIKE '%' || E.equipment_type || '%'

答案 1 :(得分:6)

如果您不想担心重复,并且不关心哪一个匹配,请切换到使用exists

select i.*
from item i
where exists (select 1
              from equipment_type
              where i.item_name like '%'||equipment_type||'%'
             )

答案 2 :(得分:2)

对于上面的MSSql Server无法运行

使用

select *
from item I
where exists (select 1
          from equipment_type
          where i.item_name like (SELECT CONCAT('%',equipment_type,'%')) 
         )

答案 3 :(得分:1)

您可以使用 CONCAT 并插入子查询:

SELECT * FROM item WHERE  item_name LIKE  
CONCAT('%', (
    SELECT equipment_type
    FROM equipment_type
    GROUP BY equipment_type), '%'
)