1

SQLデータベースでは、次のようなnull値を持たないすべての行を選択するスクリプトが必要です:

For all the rows in the database
     if row has no null values
         select it

列は動的で、列の数や名前がわかりません

ありがとうございます

4

2 に答える 2

4

これは、この質問Test if any fields are NULLの反対です。

null 値のない行を検索するように変更されたMartin Smithによる回答は、次のようになります。

;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
select *
from YourTable as T
where
  (
    select T.*
    for xml path('row'), elements xsinil, type 
  ).exist('//*/@ns:nil') = 0

そして、アーロン・バートランドが修正した答えは...

DECLARE @tb NVARCHAR(255) = N'YourTable';

DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM ' + @tb
    + ' WHERE 1 = 1';

SELECT @sql += N' AND ' + QUOTENAME(name) + ' IS NOT NULL'
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID(@tb);

EXEC sp_executesql @sql;
于 2012-08-17T07:27:41.870 に答える
-1

アプローチ:

  • sys.columnsからテーブルの列名を取得します
  • 複数のWHERE条件がANDで選択されている場合:WHERE ColA IS NOT NULL AND ColB ISNOTNULLなど...
于 2012-08-17T07:20:51.437 に答える