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