J'ai une requête comme ce qui suit:Comment exclure des lignes nulles sans exclure des cellules nulles lorsque j'utilise Excel dans C# en utilisant SQL (ADO)?
SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=D:\test.xls','SELECT * FROM Sheet1$]')
Cela ramène les lignes qui sont toutes nulles si elles ont jamais été édités puis supprimés. Je veux exclure ceux-ci, mais toujours inclure des lignes qui ont de bonnes données mais des cellules nulles possibles.
Mon premier instinct était de faire une « chaque colonne IS NOT NULL » ANDed ensemble, comme ceci:
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 )
Ceci élimine efficacement les lignes nulles, mais pour une raison quelconque, élimine également une ligne où Col4 avait une entrée nulle. J'ai essayé ceci avec et sans parens autour de la clause WHERE.
Est-ce que quelqu'un voit ce que je pourrais faire de mal, ou au lieu de cela, avoir une suggestion d'une méthode différente que je peux utiliser pour obtenir les mêmes résultats?
Ceci est actuellement en cours d'application en C# en utilisant ADO, mais je teste la requête en utilisant SQL Server Management Studio 2008.
Ok ... alors je réalise que je peux le faire dans le code C#. Je pense toujours que c'est un comportement bizarre de SQL, donc j'aimerais voir des réponses ou des réflexions sur les raisons pour lesquelles cela ne fonctionne pas comme prévu dans SQL. – IronicMuffin