Chcę sprawdzić dane, ale zignorować je, jeśli jest puste lub puste. Obecnie zapytanie jest następujące ...
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
Ale chcę uzyskać company.OfferTex
t, jeśli listing.Offertext
jest pustym ciągiem, a także, jeśli jest pusty.
Jakie jest najskuteczniejsze rozwiązanie?
sql-server-2005
digiguru
źródło
źródło
W tym przykładzie, jeśli
listing.OfferText
jest NULL, funkcja LEN () powinna również zwrócić NULL, ale to wciąż nie jest> 0.Aktualizacja
Nauczyłem się kilku rzeczy w ciągu 5 1/2 roku od opublikowania tego i teraz robię to zupełnie inaczej:
Jest to podobne do przyjętej odpowiedzi, ale ma również awarię w przypadku, gdy
Company.OfferText
jest również zerowe. Żadna z pozostałych obecnych odpowiedziNULLIF()
również tego nie robi.źródło
źródło
Oto inne rozwiązanie:
źródło
Możesz użyć
ISNULL
i sprawdzić odpowiedź na podstawie znanego wyniku:źródło
W SQL Server 2012 masz
IIF
np. Możesz go używać tak jakW ten sam sposób możesz sprawdzić, czy pole jest puste.
źródło
Użyj funkcji LEN, aby sprawdzić wartości zerowe lub puste. Możesz po prostu użyć LEN (@SomeVarcharParm)> 0. To zwróci false, jeśli wartość wynosi NULL, '' lub ''. Jest tak, ponieważ LEN (NULL) zwraca NULL, a NULL> 0 zwraca false. Również LEN ('') zwraca 0. Sprawdź na własne oczy:
źródło
źródło
NULLIF()
i połączyć się w pusty łańcuch, jeślicompany.OfferText
jest pusty. Jednak drugieNULLIF()
wywołanie tutaj nie ma żadnego sensu, jak gdyby ta wartość była pustym łańcuchem, który i tak po prostu połączy się z pustym łańcuchem.Ta prosta kombinacja COALESCE i NULLIF powinna załatwić sprawę:
Uwaga: Dodaj kolejny pusty ciąg jako ostatni argument COALESCE, jeśli chcesz, aby instrukcja zwróciła pusty ciąg zamiast NULL, jeśli obie wartości są równe NULL.
źródło
Wiem, że to stary wątek, ale właśnie widziałem jeden z wcześniejszych postów powyżej i jest on nieprawidłowy.
Jeśli używasz LEN (...) do ustalenia, czy pole ma wartość NULL, czy PUSTY , musisz użyć go w następujący sposób:
źródło
Oto rozwiązanie, ale nie wiem, czy jest najlepsze ...
źródło
źródło
ta składnia:
pracował dla mnie w Microsoft SQL Server 2008 (SP3)
źródło
Aby zapobiec zapisywaniu
Empty
lubNull
wartości w wyniku SQLmożemy po prostu dodać
..... WHERE Column_name != '' or 'null'
źródło
źródło
[Nazwa kolumny]> '' wyklucza wartości Null i puste ciągi znaków. Pomiędzy pojedynczymi cudzysłowami jest spacja.
źródło
Dotyczy to również przestrzeni.
źródło