Каждый раз, когда Вы используете ПУСТОЙ УКАЗАТЕЛЬ, Вы действительно имеете дело с Трехзначной логикой.
Ваши первые результаты возвратов запроса, поскольку оператор Where оценивает к:
3 = 1 or 3 = 2 or 3 = 3 or 3 = null
which is:
FALSE or FALSE or TRUE or UNKNOWN
which evaluates to
TRUE
второй:
3 <> 1 and 3 <> 2 and 3 <> null
which evaluates to:
TRUE and TRUE and UNKNOWN
which evaluates to:
UNKNOWN
НЕИЗВЕСТНЫМ не является то же как ЛОЖЬ, которую можно легко протестировать его путем вызова:
select 'true' where 3 <> null
select 'true' where not (3 <> null)
Оба запроса не дадут Вам результатов
, Если бы НЕИЗВЕСТНОЕ совпало с ЛОЖЬЮ, тогда предполагающей, что первый запрос дал бы Вам ЛОЖЬ, которую второе должно будет оценить к TRUE, поскольку это совпало бы с НЕ (ЛОЖЬ).
Дело не в этом.
существует очень хорошее статья об этом предмете на SqlServerCentral.
целая проблема ПУСТЫХ УКАЗАТЕЛЕЙ и Трехзначной Логики может немного сбивать с толку сначала, но важно понять для записи корректных запросов в TSQL
Другая статья, которую я рекомендовал бы, Агрегатные функции SQL и ПУСТОЙ УКАЗАТЕЛЬ .
Вам необходимо получить доступ к фактическому рабочему листу. Попробуйте что-то вроде:
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Worksheet)xlApp.Worksheets["Sheet1"];
worksheet.Name = “NewTabName”;