Я хочу проверить данные, но игнорировать их, если они нулевые или пустые. В настоящее время запрос выглядит следующим образом ...
Select
Coalesce(listing.OfferText, company.OfferText, '') As Offer_Text,
from tbl_directorylisting listing
Inner Join tbl_companymaster company
On listing.company_id= company.company_id
Но я хочу получить company.OfferTex
t, если listing.Offertext
это пустая строка, а также если это ноль.
Какое решение наиболее эффективно?
sql-server-2005
digiguru
источник
источник
В этом примере, если
listing.OfferText
NULL, функция LEN () также должна возвращать NULL, но это все еще не> 0.Обновить
Я узнал некоторые вещи за 5 с половиной лет с момента публикации, и теперь делаю это по-другому:
Это похоже на принятый ответ, но оно также имеет запасной вариант в случае, если
Company.OfferText
также является нулевым. Ни один из других текущих ответовNULLIF()
также не делает этого.источник
источник
Вот еще одно решение:
источник
Вы можете использовать
ISNULL
и проверить ответ по известному выводу:источник
В SQL Server 2012 у вас есть
IIF
, например, вы можете использовать его какТаким же образом вы можете проверить, является ли поле пустым.
источник
Используйте функцию LEN, чтобы проверить наличие нулевых или пустых значений. Вы можете просто использовать LEN (@SomeVarcharParm)> 0. Это вернет false, если значение равно NULL, '' или ''. Это потому, что LEN (NULL) возвращает NULL, а NULL> 0 возвращает false. Также LEN ('') возвращает 0. Смотрите сами:
источник
источник
NULLIF()
и объединиться в пустую строку, еслиcompany.OfferText
ноль. Однако, второйNULLIF()
вызов здесь не имеет смысла, как если бы это значение было пустой строкой, которую вы все равно собираетесь объединить обратно в пустую строку.Эта простая комбинация COALESCE и NULLIF должна сделать свое дело:
Примечание. Добавьте еще одну пустую строку в качестве последнего аргумента COALESCE, если вы хотите, чтобы оператор возвращал пустую строку вместо NULL, если оба значения равны NULL.
источник
Я знаю, что это старая тема, но я только что видел один из предыдущих постов выше, и это не правильно.
Если вы используете LEN (...), чтобы определить, является ли поле пустым или пустым, вам нужно использовать его следующим образом:
источник
Вот решение, но я не знаю, лучшее ли оно ....
источник
источник
этот синтаксис:
работал для меня в Microsoft SQL Server 2008 (SP3)
источник
Чтобы предотвратить записи с
Empty
илиNull
значение в результате SQLмы можем просто добавить
..... WHERE Column_name != '' or 'null'
источник
источник
[Column_name]> '' исключает Null и пустые строки. Между одинарными кавычками есть пробел.
источник
Это обслуживает пространства также.
источник