要获取SQL中给定行中具有空值的列的计数,可以使用以下方法:
SELECT COUNT(*)
FROM (
SELECT
CASE
WHEN column1 IS NULL THEN 1
ELSE 0
END +
CASE
WHEN column2 IS NULL THEN 1
ELSE 0
END +
CASE
WHEN column3 IS NULL THEN 1
ELSE 0
END +
...
CASE
WHEN columnN IS NULL THEN 1
ELSE 0
END AS count_null_columns
FROM table_name
WHERE condition
) AS result;
在上述查询中,将每个列的IS NULL条件放在一个CASE语句中,如果列的值为空,则返回1,否则返回0。然后将所有列的结果相加,得到给定行中具有空值的列的计数。
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'SELECT ';
SELECT @sql = @sql + N'CASE WHEN ' + COLUMN_NAME + N' IS NULL THEN 1 ELSE 0 END + '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table_name' AND TABLE_SCHEMA = 'schema_name';
SET @sql = LEFT(@sql, LEN(@sql) - 2) + N' AS count_null_columns FROM table_name WHERE condition';
EXEC sp_executesql @sql;
在上述查询中,使用INFORMATION_SCHEMA.COLUMNS系统视图获取表中的所有列名,并将每个列的IS NULL条件放在一个CASE语句中。然后将所有列的结果相加,得到给定行中具有空值的列的计数。
请注意,上述查询中的"table_name"和"schema_name"应替换为实际的表名和模式名,并根据需要添加适当的WHERE条件。
对于以上两种方法,可以根据具体的数据库和表结构进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云