使用IN运算符和NOT LIKE

问题描述 投票:0回答:1

我有一个包含通配符的字符串列表(1000 +)。

i.e. abc%, xyz%, lop%.....

我想从另一个没有匹配字符串的表中获取数据。

select * from table 
where pattern not like 'abc%'
and pattern not like  'xyz%'
and pattern not like 'lop%'
.......

当我们在where子句中有一组有限的通配符匹配时,上述查询有效。但是我有排除1000多种模式。尝试在where子句中添加所有字符串时出现stack错误。为了克服此问题,我尝试创建一个临时表,然后尝试将其与我的表联接。

    create table #temp (str varchar(200))
    insert into #temp values('abc%')
    .....

我想从没有上述模式(临时表)的表中获取记录。

sybase sybase-ase
1个回答
0
投票

您可以先在#temp中找到具有匹配行的那些,然后选择不属于该集合的那些:

select *
from yourtable y
where y.pattern not in (
   select y2.pattern
   from yourtable y2
     join #temp p on y2.pattern like p.str
)
© www.soinside.com 2019 - 2024. All rights reserved.