如何在DB2中使用LI和IN?

问题描述:

SELECT * FROM abc WHERE column1 IN (a1,b1,c1) 

我想用这个select查询使用LIKE;我怎么能写这样的语句与,类似下面的查询:如何在DB2中使用LI和IN?

SELECT * FROM abc WHERE column1 LIKE IN (a%,b%,c%) 

你不能。把它写成:

column1 LIKE 'a%' OR column1 LIKE 'b%' OR column1 LIKE 'c%' 

你不能in结合like。把它作为单独的比较:

select column1 
from abc 
where column1 like 'a%' or column1 like 'b%' or column1 like 'c%' 

正如其他人说你可以使用OR条件列表来指定条件。

您还可以在from子句中使用临时表或子查询。下面是from子句中子查询的示例:

select column1 
    from abc 
    , table(
     (select 'a%' as term from SYSIBM.SYSDUMMY1) 
     union all 
     (select 'b%' from SYSIBM.SYSDUMMY1) 
     union all 
     (select 'c%' from SYSIBM.SYSDUMMY1) 
    ) search_list 
    where abc.column1 like search_list.term; 
+0

我不是DB2专家。 from子句中的这个子查询不是ANSI语法。 – 2012-08-07 04:15:17

+0

在DB2中它可能类似'... FROM abc,(SELECT'a%'AS term FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT'b%'FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT'c%'FROM SYSIBM.SYSDUMMY1)search_list在哪里......用012 SYSIBM.SYSDUMMY1编辑的 – 2012-08-07 07:02:26

+0

(我猜这相当于MySQL或Oracle中的FROM DUAL) – 2012-08-07 07:05:49