C# 在使用SQL(ADO)将Excel拉入C时,如何排除空行而不排除空单元格?
我有一个类似以下的问题: SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=D:\test.xls','SELECT * FROM Sheet1$]') 这将返回所有行,如果它们曾经被编辑然后被删除,则这些行都是空的。我想排除这些,但仍然包括具有良好数据但可能为空单元格的行 我的第一反应是在每一列都不为NULL的情况下进行排序,如下所示: 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子句中使用parens和不使用parens 有没有人知道我可能做错了什么,或者有没有人建议我可以用另一种方法来达到同样的效果 这目前正在使用ADO在C中实现,但我正在使用SQLServerManagementStudio 2008测试查询C# 在使用SQL(ADO)将Excel拉入C时,如何排除空行而不排除空单元格?,c#,sql,excel,null,ado,C#,Sql,Excel,Null,Ado,我有一个类似以下的问题: SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=D:\test.xls','SELECT * FROM Sheet1$]') 这将返回所有行,如果它们曾经被编辑然后被删除,则这些行都是空的。我想排除这些,但仍然包括具有良好数据但可能为空单元格的行 我的第一反应是在每一列都不为NULL的情况下进行排序,如下所示: SELECT * FROM OPENROWSE
WHERE
(
Col1 IS NOT NULL
OR Col2 IS NOT NULL
OR Col3 IS NOT NULL
OR Col4 IS NOT NULL
)
或
其中CoalesceCol1、Col2、Col3、Col4不为NULL oledb/excel没有coalesce函数
或
其中CoalesceCol1,Col2,Col3,Col4不为空oledb/excel没有coalescecol函数Ok…所以我意识到我可以在C代码中实现这一点。我仍然认为这是来自SQL的奇怪行为,所以我想看看答案或想法,看看为什么这在SQL中不能像预期的那样工作。好吧……所以我意识到我可以在C代码中做到这一点。我仍然认为这是SQL中奇怪的行为,所以我想看看关于为什么这在SQL中不能按预期工作的答案或想法。因为这是或,它不排除只有一列为null的行吗?这是我不想做的事。不,它将包括那一行。想象一下,好像只有第一部分col1不为null。这将只显示col1有值的行。如果col1为null,而col2为null,则跳过该行。所以您需要允许col1或col2为null,但不能同时为两者。依此类推。因为这是OR'd,所以它不排除只有一列为null的行吗?这是我不想做的事。不,它将包括那一行。想象一下,好像只有第一部分col1不为null。这将只显示col1有值的行。如果col1为null,而col2为null,则跳过该行。所以您需要允许col1或col2为null,但不能同时为两者。等等