与IN LIKE一起使用IN运算符

时间:2019-12-26 13:24:29

标签: sybase sybase-ase

我有一个包含通配符的字符串列表(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%')
    .....

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

1 个答案:

答案 0 :(得分: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
)