我需要选择一个字段以几个不同的前缀之一开头的行:
select * from table where field like 'ab%' or field like 'cd%' or field like "ef%" or...
在Oracle或SQL Server中使用SQL的最佳方法是什么?我正在寻找类似以下语句的内容(不正确):
select * from table where field like in ('ab%', 'cd%', 'ef%', ...)
或者
select * from table where field like in (select foo from bar)
编辑:我想看看如何通过在一个SELECT语句中提供所有前缀,或将所有前缀存储在帮助器表中来完成此操作。
前缀长度不固定。
将前缀表与实际表连接将在SQL Server和Oracle中都可以使用。
DECLARE @Table TABLE (field VARCHAR(32)) DECLARE @Prefixes TABLE (prefix VARCHAR(32)) INSERT INTO @Table VALUES ('ABC') INSERT INTO @Table VALUES ('DEF') INSERT INTO @Table VALUES ('ABDEF') INSERT INTO @Table VALUES ('DEFAB') INSERT INTO @Table VALUES ('EFABD') INSERT INTO @Prefixes VALUES ('AB%') INSERT INTO @Prefixes VALUES ('DE%') SELECT t.* FROM @Table t INNER JOIN @Prefixes pf ON t.field LIKE pf.prefix