如何从mysql表中获取空白或空值或0的列数

时间:2018-11-21 05:56:55

标签: php mysql sql codeigniter select

我想从MySQL表中获取没有值的列数,这意味着它们为空或零。
其实我想衡量一下员工档案,他填写了多少字段,还剩下多少字段?
我正在将MySQL与PHP结合使用。

3 个答案:

答案 0 :(得分:0)

除了手动汇总每一列之外,我看不到其他方法。这是一种简洁的方法:

SELECT
    empId,
    IF(COALESCE(col1, '') = '', 1, 0) +
    IF(COALESCE(col2, '') = '', 1, 0) +
    ...
    IF(COALESCE(colN, '') = '', 1, 0) AS num_cols_missing
FROM yourTable;

我们可以将NULL列值替换为空字符串,然后将该结果与空字符串进行比较。这意味着我们可以使用单个逻辑表达式检查NULL是否为空。

答案 1 :(得分:0)

使用此架构Employee(id, fname, lname, dob)

给出一个表

如果您要查找包含Employee或空白NULL的{​​{1}}行的数量,则可以执行以下操作...

fname

当然,您可以扩展它以找到任何SELECT COUNT(fname) AS 'number of empty fnames' FROM `Employee` WHERE `fname` IS NULL OR `fname` = ''; 或空白字段/列。

答案 2 :(得分:0)

DECLARE @Str VARCHAR(max) = (
        SELECT stuff((
                    SELECT 'and ' + c.NAME + ' is null '
                    FROM sys.columns c
                    WHERE object_name(object_id) = 'yourtablename'
                    ORDER BY c.NAME
                    FOR XML PATH('')
                    ), 1, 3, '')
        )

SET @Str = 'select * from ' + yourtablename + ' where ' + @Str

PRINT @Str

EXEC (@Str)