请问您如何查找表中包含1个或更多缺失值的行数?缺少的值在我的表中由question marks = '?'
表示。该表格为15 columns and ~50k rows
。当我对某些列运行以下查询时,我可以收到一些结果:
SELECT
COUNT(*)
FROM table_name
WHERE column_name ='?'
但是我还有一些专栏给我带来了结果:"Error converting data type varchar to float"
我希望能够找到表中具有1个或多个缺失值的行数,使用1个查询/不为每列单独运行。
提前感谢您的支持!
答案 0 :(得分:0)
这适用于任何专栏:
select count(*)
from table_name
where column_name is null or cast(column_name as varchar(255)) = '?';
答案 1 :(得分:0)
Select Count(*)
From mySchema.myTable
Where Cast(Col1 As NVarChar(128)) +
Cast(Col2 As NVarChar(128)) +
Cast(Coln As NVarChar(128)) Like '%?%'
丑陋且会慢和您可能需要相应地修改演员,但应该这样做。
答案 2 :(得分:0)
尝试以下查询: 只需设置表名即可获得所有列 你也可以像''一样给value_to_match在你的情况下或任何其他你想要的。
DECLARE @table_name nvarchar(max) = 'table_name'
DECLARE @value_to_match nvarchar(max) = '1'
DECLARE @query nvarchar(max) = ''
DECLARE @Condition nvarchar(max) = ' OR ' -- 1 OR when you want to count row if any column has that value -- 2 when you want all all columns to have same value
SELECT @query = @query + ' cast(' + COLUMN_NAME + ' as nvarchar(500)) = ''' + @value_to_match + '''' + @Condition FROM informatioN_schema.columns WHERE table_name = @table_name
if @@rowcount = 0
BEGIN
SELECT 'Table doesn''t Exists'
RETURN
END
SELECT @query = LEFT(@query,LEN(@query)-3)
PRINT ('select count(9) FROM ' + @table_name + ' WHERE ' + @query)
EXEC ('select count(9) FROM ' + @table_name + ' WHERE ' + @query)