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

jm2pwxwz  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(381)

我想从mysql表中得到没有值的列数,即为空或零。
实际上,我想测量一下员工档案,他填写了多少字段,剩下多少字段?
我使用mysql和php。

eh57zj3b

eh57zj3b1#

给定一个具有此架构的表 Employee(id, fname, lname, dob) 如果你想找到 Employee 有一排 NULL 还是空的 fname 然后你会做以下事情。。。

SELECT COUNT(fname) AS 'number of empty fnames'
FROM `Employee`
WHERE `fname` IS NULL
     OR `fname` = '';

当然,你可以扩展它来找到任何 NULL 或空字段/列。

k97glaaz

k97glaaz2#

除了手动对每一列求和之外,我看不到任何其他方法。下面是一个比较简洁的方法:

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 只有一个逻辑表达式。

dtcbnfnu

dtcbnfnu3#

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)

相关问题