Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query:trova le righe che non appartengono a un elenco di valori

Il problema che credo è che stai cercando di trovare valori da te nella dichiarazione. Quello che devi fare è trasformare la tua dichiarazione in una tabella e quindi puoi determinare quali valori sono diversi.

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)

Un'alternativa migliore sarebbe creare una funzione con valori di tabella per trasformare la stringa delimitata da virgole in una tabella. Non ho alcun codice a portata di mano, ma dovrebbe essere facile da trovare su Google. In tal caso, dovrai solo utilizzare la sintassi seguente.

select
 id
from
 dbo.SplitStringToTable('2,3,6,7')
where
 not exists (select 1 from Tab where Col = id)

Spero che questo aiuti