Я использую MS SQL 2005.T-SQL вопрос сравнения VARCHAR
Почему это дает мне правильные результаты (возвращает 169 строк) ...
select
*
from
[import_Data]
where
[import_Data].name not in
(
select
[import_Data].name
from
[import_Data]
inner join [resource] on [import_Data].name = [resource].name
where
[import_Data].ProviderTypeID = 4
and [resource].IsDeleted = 0
)
and [import_Data].ProviderTypeID = 4
Но это не (возвращает 0 строк) ...
select
*
from
[import_Data]
where
[import_Data].name not in
(
select
[resource].name
from
[resource]
where
IsDeleted = 0
)
and [import_Data].ProviderTypeID = 4
Единственное различие между name
колонн, что [resource].name
является varchar(500)
и [import_Data].name
является varchar(300)
.
Ответ @ Станислав Бирон имеет недостающую часть. Только «NOT IN» терпит неудачу в NULL в списке. «IN» отлично работает с NULL в списке. +1 все еще. – Tomalak