MySQL: найти столбцы, допускающие значение NULL, которые могут быть NON NULL - PullRequest
0 голосов
/ 07 августа 2020

Я борюсь с базой данных, которая имеет плохую гигиену в отношении столбцов NON NULL.

Некоторые столбцы всегда имеют данные, то есть они могут быть NON NULL, но это не так. Другие удивляют меня, когда я ожидаю, что у них всегда будут данные, а у них нет, и я инициирую исключения нулевого указателя.

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

SELECT DISTINCT(column) FROM table WHERE column IS NULL

Но в идеале мне бы не пришлось делать это столбец за столбцом, таблица за таблицей. Есть ли способ автоматизировать это?

1 Ответ

1 голос
/ 07 августа 2020

Вам нужно сделать это таблица за таблицей.

Но вы можете запросить, как это, чтобы подсчитать экземпляры NULL:

SELECT COUNT(*) AS total_rows,
  SUM(column1 IS NULL) AS column1_nulls,
  SUM(column2 IS NULL) AS column2_nulls,
  SUM(column3 IS NULL) AS column3_nulls,
  ...for all the columns...
FROM mytable;

В MySQL логические выражения оцениваются как целые числа 1 или 0. Таким образом, СУММ () единиц и нулей эквивалентна СЧЕТЧИКУ (), где логическое выражение истинно. Этот трюк позволяет подсчитывать несколько значений во всех строках без использования условий WHERE.

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