Sql server 2008 选择没有空值的行

Sql server 2008 选择没有空值的行,sql-server-2008,select,Sql Server 2008,Select,在sql数据库中,我需要一个脚本来选择所有没有空值的行,如下所示: For all the rows in the database if row has no null values select it 列是动态的,我不知道它们的编号或名称 谢谢你方法: 从sys.columns获取表的列名 使用多个WHERE条件AND进行选择:WHERE ColA不为NULL,ColB不为NULL等等 这与这个问题相反 通过修改来查找没有空值的行的答案如下所示 ;with x

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

For all the rows in the database
     if row has no null values
         select it
列是动态的,我不知道它们的编号或名称

谢谢你

方法:

  • 从sys.columns获取表的列名
  • 使用多个WHERE条件AND进行选择:WHERE ColA不为NULL,ColB不为NULL等等

    • 这与这个问题相反

      通过修改来查找没有空值的行的答案如下所示

      ;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;
      

      你是说一张特定的桌子吗?还是整个数据库?你说的是什么样的“动态”。包括临时表吗?