SELECT * FROM abc WHERE column1 IN (a1,b1,c1)
我想在这个SELECT查询中使用LIKE语句;我该如何编写带有IN的LIKE语句,类似于以下查询:
SELECT * FROM abc WHERE column1 LIKE IN (a%,b%,c%)
你不能将like
和in
组合在一起。请将它们分别作为比较条件:
select column1
from abc
where column1 like 'a%' or column1 like 'b%' or column1 like 'c%'
你不能这样做。
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;
SELECT *
FROM abc
WHERE LEFT(column1, 1) IN ('a', 'b', 'c')
我假设你的情况实际上更加复杂,但也许你可以根据自己的需求调整这个片段...
...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 WHERE ...
的东西。 - Andriy Mtable
。我的意思是,虽然table()
(即使它被 DB2 支持)似乎用于将标量值“转换”为行,但SELECT
已经返回了一组行,我也不是 DB2 专家。 - Andriy MVALUES
构造器(如果在DB2的派生表上下文中可用)可以使用,它可能会更加优雅。 - Andriy M