Как получить количество столбцов, которые являются пустыми или нулевыми значениями или 0 из таблицы MySQL - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу получить номер столбца из таблицы MySQL, который не имеет значений, значит, пустые или нулевые.
На самом деле, я хочу измерить профиль сотрудника, сколько полей он заполнил и сколько осталось?
Я использую MySQL с PHP.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Учитывая таблицу с этой схемой 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 или пустое поле / столбец.

0 голосов
/ 21 ноября 2018
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)
0 голосов
/ 21 ноября 2018

Я не вижу другого способа сделать это, кроме как вручную суммировать каждый столбец.Вот несколько краткий способ сделать это:

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, так и пустое с помощью одного логического выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...