1

在 sql 数据库中,我需要一个脚本来选择所有没有空值的行,如下所示:

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

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

Aaron Bertrand修改后提供的答案是……

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 条件 ANDed 进行选择:WHERE ColA IS NOT NULL AND ColB IS NOT NULL 等等...
于 2012-08-17T07:20:51.437 回答