Le problème, je crois, est que vous essayez de trouver des valeurs de vous dans la déclaration. Ce que vous devez faire est de transformer votre instruction in en un tableau, puis vous pourrez déterminer quelles valeurs sont différentes.
create table #temp
(
value int
)
insert into #temp values 1
insert into #temp values 2
insert into #temp values 3
insert into #temp values 4
select
id
from
#temp
where
not exists (select 1 from Tab where Col = id)
Une meilleure alternative serait de créer une fonction table pour transformer votre chaîne délimitée par des virgules en table. Je n'ai pas de code sous la main, mais il devrait être facile à trouver sur Google. Dans ce cas, vous n'auriez qu'à utiliser la syntaxe ci-dessous.
select
id
from
dbo.SplitStringToTable('2,3,6,7')
where
not exists (select 1 from Tab where Col = id)
J'espère que cela vous aidera