当前位置: 首页 > 面试题库 >

选择除仅具有空值的那些列以外的所有列

宣意致
2023-03-14
问题内容

有没有一种方法可以选择某个表的列名,只有那些具有空值的列除外,而不知道该表有多少列。

-------------------------
| col1  | col2   | col3 |
------------------------
| val1  | null   | val2 |
| val1  | null   | null |
| null  | null   | val2 |
-------------------------

应导致:

------------------------------------
| cols_except_those_with_null_only |
-----------------------------------
| col1                             |
| col3                             |
------------------------------------

谢谢!


问题答案:

创建具有以下内容的存储过程:

create table #cols (colname varchar(255), nullCount int)

insert into #cols (colname)
select name from syscolumns where id = object_id('tblTest')

declare @c varchar(255)

declare curCols cursor for select colname from #cols
open curCols
fetch next from curCols into @c
while @@fetch_status = 0 begin
  exec ('update #cols set nullCount = (select count(*) from tblTest where ' + @c + ' is not null) where colname = ''' + @c + '''')
  fetch next from curCols into @c
end
close curCols
deallocate curCols

declare @rv table (cols_expect_those_with_null_only varchar(255))

insert into @rv (cols_expect_those_with_null_only)
select colname from #cols
where nullCount > 0

drop table #cols

select * from @rv


 类似资料:
  • 问题内容: 我正在尝试使用select语句从某个MySQL表中获取除一个以外的所有列。有没有简单的方法可以做到这一点? 编辑:此表中有53列(不是我的设计) 问题答案: 实际上有一种方法,您当然需要具有执行此操作的权限… 更换

  • 问题内容: 如何选择表中除一列以外的所有列? 我有将近259列,我不能在声明中提及258列。 还有其他方法吗? 问题答案: 您可以使用这种方法从除以下以外的所有列中获取数据:- 将所有数据插入临时表 然后从临时表中删除不需要的列 从临时表中获取数据(这将不包含已删除列的数据) 删除临时表 像这样的东西:

  • 问题内容: 是否可以选择除一列之外的所有列? 这是所有列名称:ID,名称,地址,年龄 我不想使用此select语句,因为我的表的列数彼此不同。 问题答案: declare @cols varchar(max), @sql varchar(max) SELECT @cols = STUFF ( ( SELECT DISTINCT ‘], [‘ + name FROM sys.columns wher

  • 问题内容: 我有一个数据框看起来像这样: 我如何才能获得除以外的所有列? 问题答案: 当列不是MultiIndex时,仅是列名称的数组,因此您可以执行以下操作:

  • 问题内容: 如何在CSS表中选择除第一个元素以外的所有元素? 我尝试使用此方法,但发现它不起作用。 问题答案: 通过将类添加到第一个或后续的s中。没有单独使用CSS来选择所需行的跨浏览器方法。 但是,如果您不关心Internet Explorer 6、7或8:

  • 问题内容: 我有这张表: 有没有一种方法可以通过密钥分组来获得此结果? 或此结果: 如果我使用此查询: 我知道这是不正确的,因为我应该按需要显示的所有列进行分组。 有解决这个问题的方法吗? 问题答案: 适用于所有数据库引擎的查询将是 min(id)影响您获得结果的功能在哪里?如果您使用max(id),则得到另一个。