Как проверить, является ли столбец пустым или нулевым, используя оператор выбора запроса SQL?
Как проверить, является ли столбец пустым или нулевым, используя инструкцию select SQL?
Например, если я хочу проверить:
select * from UserProfile WHERE PropertydefinitionID in (40, 53) and PropertyValue is null or empty
Ответ 1
Это делает то, что вы хотите?
SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
AND ( PropertyValue is NULL
or PropertyValue = '' );
Ответ 2
Здесь несколько другой способ:
SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
AND (LEN(ISNULL(PropertyValue,'')) = 0)
Ответ 3
Вот мой предпочтительный способ проверить "если null или empty":
SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
AND NULLIF(PropertyValue, '') is null
Поскольку он изменяет аргумент поиска (SARG), он может иметь проблемы с производительностью, поскольку он может не использовать существующий индекс в столбце PropertyValue.
Ответ 4
Если вы хотите, чтобы пробелы и значения NULL отображались в виде другого текста, например "Без рубрики", вы можете просто сказать...
SELECT ISNULL(NULLIF([PropertyValue], ''), 'Uncategorized') FROM UserProfile
Вышесказанное очень хорошо отвечает на главный вопрос. Этот ответ является продолжением этого и имеет ценность для читателей.
Ответ 5
Ответ выше дал мне 99% пути (спасибо Денис Ивин!). Для реализации PHP/MySQL мне нужно было немного изменить синтаксис:
SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
AND (LENGTH(IFNULL(PropertyValue,'')) = 0)
LEN становится ДЛИНОЙ, а ISNULL становится IFNULL.
Ответ 6
select isnull(nullif(CAR_OWNER_TEL, ''), 'NULLLLL') PHONE from TABLE