小编典典

如何结合IN运算符与LIKE条件(或获得可比结果的最佳方法)

sql

我需要选择一个字段以几个不同的前缀之一开头的行:

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语句中提供所有前缀,或将所有前缀存储在帮助器表中来完成此操作。

前缀长度不固定。


阅读 263

收藏
2021-04-28

共1个答案

小编典典

将前缀表与实际表连接将在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
2021-04-28