我有一个包含通配符的字符串列表(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%')
.....
我想从没有上述模式(临时表)的表中获取记录。
答案 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
)