У меня есть такой запрос:
SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=D:\test.xls','SELECT * FROM Sheet1$]')
Это возвращает строки, которые все являются нулевыми, если они когда-либо были отредактированы, а затем удалены. Я хочу исключить их, но по-прежнему включать строки с хорошими данными, но с возможными нулевыми ячейками.
Моим первым побуждением было объединить И «ГДЕ каждый столбец НЕ ПУСТОЙ», вот так:
SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)}; DBQ=D:\test.xls', 'SELECT * FROM Sheet1$]')
WHERE
(
Col1 IS NOT NULL
AND Col2 IS NOT NULL
AND Col3 IS NOT NULL
AND Col4 IS NOT NULL
)
Это эффективно удаляет пустые строки, но по какой-то причине также исключает строку, в которой Col4 имеет пустую запись. Я пробовал это с скобками вокруг предложения WHERE и без них.
Кто-нибудь видит, что я делаю неправильно, или вместо этого есть предложение о другом методе, который я могу использовать для достижения тех же результатов?
В настоящее время это реализуется на C # с использованием ADO, но я тестирую запрос с помощью Sql Server Management Studio 2008.