我正在寻找数据迁移项目中缺少的数据,这份报告对我很有帮助。
给定一个MySQL表,我想计算该表的每一行中的所有空(NULL或'')值。输出将是列名列表以及每列的空行或非空行数。我会手动将这些数据与源表进行比较 - 手动,因为我希望很少有计数匹配完全,并且源名称和导入表之间的列名完全不同。
我有大约30个表要检查,一些有100列。我可以从我的PC直接访问MySQL,但是没有权限在服务器上使用数据库运行任何脚本。
TableA的示例
Col1 Col2 Col3
'XX' NULL 'XX'
'XX' NULL ''
'XX' 'XX' 'XX'
'XX' '' 'XX'
我想要的报告是(对于非空计数,“计为空”):
Col1: 4
Col2: 1
Col3: 3
答案 0 :(得分:8)
COUNT
也计算空字符串,因此您的查询应如下所示:
SELECT COUNT( NULLIF( col1, '' ) ), COUNT( NULLIF( col2, '' ) ), ...
答案 1 :(得分:2)
您可以对每个表使用以下查询
SELECT COUNT(*), COUNT(col1) as col1, COUNT(col2) as col2
FROM TABLE1
要获取特定表的所有列,您应该运行查询
select column_name from information_schema.columns where TABLE_NAME='TABLE1';
此查询的结果可用于自动生成查询,例如第一个。
答案 2 :(得分:1)
仅计算具有值的行(跳过空/空行)!!!
SELECT COUNT( NULLIF( Column_Name, '' ) ) from Table_name
答案 3 :(得分:0)
这对我有用
SELECT count( NULLIF( doctor_id, '' )) as doctor_count,count( NULLIF( chemist_id, '' )) as chemistcount from table_name WHERE employee_id="20";