【发布时间】:2025-12-12 22:05:02
【问题描述】:
我有如下查询:
SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=D:\test.xls','SELECT * FROM Sheet1$]')如果它们曾经被编辑然后被删除,这将带回所有为空的行。我想排除这些,但仍包括具有良好数据但可能为空单元格的行。
我的第一个直觉是做一个“每列不为空”的AND运算,如下所示:
SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)}; DBQ=D:\test.xls', 'SELECT * FROM Sheet1$]') 在哪里 ( Col1 不为空 并且 Col2 不为空 并且 Col3 不为空 并且 Col4 不为空 )这有效地消除了空行,但由于某种原因,也消除了 Col4 具有空条目的行。我在 WHERE 子句周围有无括号都试过了。
有没有人看到我可能做错了什么,或者作为替代方法,有没有人建议我可以使用不同的方法来实现相同的结果?
目前正在使用 ADO 在 C# 中实现,但我正在使用 Sql Server Management Studio 2008 测试查询。
【问题讨论】:
-
好的...所以我意识到我可以在 C# 代码中做到这一点。我仍然认为这是 SQL 的奇怪行为,所以我想看看为什么这在 SQL 中不能按预期工作的答案或想法。