Подтвердить что ты не робот

В MySQL вы можете проверить, является ли поле NULL или пустым, используя только одно сравнение?

Если я хочу проверить, является ли поле NULL или пустым, используя запрос MySQL, я знаю, что могу сделать что-то вроде этого:

column = '' OR column IS NULL

Однако есть ли способ проверить это, не делая двух отдельных сравнений?

4b9b3361

Ответ 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, '') = ''