gpt4 book ai didi

sql - 计算每列中空值的数量

转载 作者:行者123 更新时间:2023-12-04 17:52:58 25 4
gpt4 key购买 nike

我遇到了一个表太宽的数据库。 (600 多列)即使不带参数询问前 100 行也需要 4 秒。我想把这些 table 缩小一点。

要确定哪些列最容易移动到新表或完全删除,我想知道每列中有多少空值。这应该告诉我哪些信息可能是最不重要的。

我将如何编写一个可以查找所有列并计算这些列中的空值的查询?

编辑 DB 是 SQL server 2008。我真的不希望单独键入每一列。看起来 sys.columns 可以帮助解决这个问题吗?

编辑 2 列都是不同的类型。

最佳答案

尝试这个

declare @Table_Name nvarchar(max), @Columns nvarchar(max), @stmt nvarchar(max)

declare table_cursor cursor local fast_forward for
select
s.name,
stuff(
(
select
', count(case when ' + name +
' is null then 1 else null end) as count_' + name
from sys.columns as c
where c.object_id = s.object_id
for xml path(''), type
).value('data(.)', 'nvarchar(max)')
, 1, 2, '')
from sys.tables as s

open table_cursor
fetch table_cursor into @Table_Name, @Columns

while @@FETCH_STATUS = 0
begin
select @stmt = 'select ''' + @Table_Name + ''' as Table_Name, ' + @Columns + ' from ' + @Table_Name

exec sp_executesql
@stmt = @stmt

fetch table_cursor into @Table_Name, @Columns
end

close table_cursor
deallocate table_cursor

关于sql - 计算每列中空值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com