Как проверить, является ли столбец пустым или нулевым, используя оператор выбора SQL-запроса? - PullRequest
17 голосов
/ 24 января 2011

Как проверить, является ли столбец пустым или нулевым, используя оператор выбора SQL?

Например, если я хочу проверить:

select * from UserProfile WHERE PropertydefinitionID in (40, 53) and PropertyValue is null or empty

Ответы [ 5 ]

32 голосов
/ 24 января 2011

Делает ли это то, что вы хотите?

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
  AND (    PropertyValue is NULL
        or PropertyValue = '' );
19 голосов
/ 17 апреля 2013

Вот немного другой способ:

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
  AND (LEN(ISNULL(PropertyValue,'')) = 0)
8 голосов
/ 07 ноября 2013

Вот мой предпочтительный способ проверки «если ноль или пусто»:

SELECT * 
FROM UserProfile 
WHERE PropertydefinitionID in (40, 53) 
AND NULLIF(PropertyValue, '') is null

Так как он изменяет аргумент поиска (SARG), у него могут быть проблемы с производительностью, поскольку он может не использовать существующий индекс встолбец PropertyValue.

2 голосов
/ 11 сентября 2018

Если вы хотите, чтобы пробелы и значения NULL отображались в виде другого текста, например «Без рубрики», вы можете просто сказать ...

SELECT ISNULL(NULLIF([PropertyValue], ''), 'Uncategorized') FROM UserProfile

Вышесказанное очень хорошо отвечает на главный вопрос. Этот ответ является продолжением этого и имеет ценность для читателей.

0 голосов
/ 17 октября 2018

Ответ выше дал мне 99% пути (спасибо Денис Ивин!). Для реализации PHP / MySQL мне нужно было немного изменить синтаксис:

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
AND (LENGTH(IFNULL(PropertyValue,'')) = 0)

LEN становится ДЛИНОЙ, а ISNULL становится IFNULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...