У меня есть такой запрос:
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.