【问题标题】:How to get number of columns which are blank or null values or 0 from mysql table如何从mysql表中获取空白或空值或0的列数
【发布时间】:2019-04-23 16:00:07
【问题描述】:

我想从 MySQL 表中获取没有值的列数,表示为空白或零。
其实,我想衡量一下他填写了多少字段,还剩下多少的员工档案?
我正在使用 MySQL 和 PHP。

【问题讨论】:

    标签: php mysql sql codeigniter select


    【解决方案1】:
    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)
    

    【讨论】:

      【解决方案2】:

      给定一个具有此架构Employee(id, fname, lname, dob)的表

      如果您想查找具有NULL 或空fnameEmployee 行数,那么您可以执行以下操作...

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

      当然,您可以扩展它以查找任何 NULL 或空字段/列。

      【讨论】:

        【解决方案3】:

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

        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 和空。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-04
          • 1970-01-01
          • 2018-04-20
          • 1970-01-01
          • 1970-01-01
          • 2021-11-15
          • 1970-01-01
          • 2018-04-27
          相关资源
          最近更新 更多