Как проверить, является ли столбец пустым или нулевым, используя оператор выбора запроса 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

заменит CAR_OWNER_TEL, если пуст по NULLLLL