我有一张包含100多个免费字段的表格。我想创建一个脚本来检查列是否为null或为存在的所有行都为空。
我该怎么做?我希望之后使其成为动态,因此它可以为每个列执行此操作,并将列名插入临时表中以显示哪些可用。
答案 0 :(得分:1)
如果我做对了,你想检查给定列中所有行是空还是空。它不应该报告一个列,其中只有一些 null或空字段?
您可以使用NOT EXISTS
。检查是否存在行,其中列不为空而不为空。
SELECT '<column_name>' column_name
WHERE NOT EXITS (SELECT *
FROM elbat
WHERE isnull(<column_name>, '') <> '');
如果你想计算只包含空格的列,除了在检查与空字符串相等之前去除空格之外,还要使用rtrim()
。
SELECT '<column_name>' column_name
WHERE NOT EXITS (SELECT *
FROM elbat
WHERE rtrim(isnull(<column_name>, '')) <> '');
将<column_name>
替换为您的实际列名。
要将其重用于多个列名,您必须使用动态SQL。将查询构建为nvarchar
,在正确的位置插入所需的列名称,并使用EXECUTE
或sp_executesql
执行。
您可以从目录中获取表格的列名。
SELECT c.name
FROM sys.columns c
INNER JOIN sys.tables t
ON t.object_id = c.object_id
INNER JOIN sys.schemas s
ON s.schema_id = t.schema_id
WHERE s.name = '<schema_name>'
AND t.name = '<table_name>';
将<schema_name>
替换为您的架构名称,将<table_name>
替换为您的表名。
使用cursor循环目录中的结果。