В MySQL вы можете проверить, является ли поле NULL или пустым, используя только одно сравнение? Если я хочу проверить, является ли поле NULL или пустым, используя запрос MySQL, я знаю, что могу сделать что-то вроде этого: column = '' OR column IS NULL Однако есть ли способ проверить это, не делая двух отдельных сравнений? Ответ 1 Используйте COALESCE() для "нормализации" значения (преобразуйте значения NULL в пустую строку); WHERE COALESCE(mycolumn, '') = '' Прочтите документацию: COALESCE() Или наоборот; конвертировать пустые строки в NULL; WHERE NULLIF(mycolumn, '') IS NULL Документация: NULLIF() Из этих двух я бы предпочел COALESCE(), поскольку он является частью стандарта ANSI SQL Вы можете экспериментировать с ним сами, просто сделайте это; SELECT mycolumn AS orig_value, COALESCE(mycolumn, '') AS coalesce_value, (COALESCE(mycolumn, '') = '') AS compare_result FROM mytable; Это покажет исходное значение, значение "coalesce" и результат сравнения бок о бок для каждой строки таблицы Ответ 2 WHERE COALESCE(column, '') = '' Ответ 3 Другой метод без WHERE, попробуйте это. Выберет значения Empty и NULL SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename Ответ 4 Попробуйте следующее: WHERE NOT(column LIKE '_%') Без NOT значение столбца должно иметь хотя бы один символ и не может быть NULL. EDIT: MySQL все еще, кажется, проглотил значение NULL таким образом. Это должно работать лучше: WHERE IFNULL(column, '') = ''
Ответ 1 Используйте COALESCE() для "нормализации" значения (преобразуйте значения NULL в пустую строку); WHERE COALESCE(mycolumn, '') = '' Прочтите документацию: COALESCE() Или наоборот; конвертировать пустые строки в NULL; WHERE NULLIF(mycolumn, '') IS NULL Документация: NULLIF() Из этих двух я бы предпочел COALESCE(), поскольку он является частью стандарта ANSI SQL Вы можете экспериментировать с ним сами, просто сделайте это; SELECT mycolumn AS orig_value, COALESCE(mycolumn, '') AS coalesce_value, (COALESCE(mycolumn, '') = '') AS compare_result FROM mytable; Это покажет исходное значение, значение "coalesce" и результат сравнения бок о бок для каждой строки таблицы
Ответ 3 Другой метод без WHERE, попробуйте это. Выберет значения Empty и NULL SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
Ответ 4 Попробуйте следующее: WHERE NOT(column LIKE '_%') Без NOT значение столбца должно иметь хотя бы один символ и не может быть NULL. EDIT: MySQL все еще, кажется, проглотил значение NULL таким образом. Это должно работать лучше: WHERE IFNULL(column, '') = ''