Ich möchte nach Daten suchen, diese aber ignorieren, wenn sie null oder leer sind. Derzeit lautet die Abfrage wie folgt ...
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
Aber ich möchte company.OfferTex
t bekommen, wenn listing.Offertext
es sich um eine leere Zeichenfolge handelt und wenn sie null ist.
Was ist die leistungsstärkste Lösung?
sql-server-2005
Digiguru
quelle
quelle
Wenn in diesem Beispiel
listing.OfferText
NULL ist, sollte die Funktion LEN () auch NULL zurückgeben, aber das ist immer noch nicht> 0.Aktualisieren
Ich habe in den 5 1/2 Jahren seit dem Posten einige Dinge gelernt und mache es jetzt ganz anders:
Dies ähnelt der akzeptierten Antwort, hat jedoch auch einen Fallback, falls
Company.OfferText
ebenfalls null ist. Keine der anderen aktuellen Antworten verwendet diesNULLIF()
ebenfalls.quelle
quelle
Hier ist eine andere Lösung:
quelle
Sie können
ISNULL
die Antwort verwenden und mit der bekannten Ausgabe vergleichen:quelle
In SQL Server 2012 haben Sie
IIF
, zB können Sie es wie verwendenAuf die gleiche Weise können Sie überprüfen, ob das Feld leer ist.
quelle
Verwenden Sie die LEN-Funktion, um nach Null- oder Leerwerten zu suchen. Sie können einfach LEN (@SomeVarcharParm)> 0 verwenden. Dies gibt false zurück, wenn der Wert NULL, '' oder '' ist. Dies liegt daran, dass LEN (NULL) NULL und NULL> 0 false zurückgibt. Außerdem gibt LEN ('') 0 zurück. Überzeugen Sie sich selbst:
quelle
quelle
NULLIF()
und zu einer leeren Zeichenfolge zusammenzufassen, wenncompany.OfferText
null ist. Der zweiteNULLIF()
Aufruf hier hat jedoch keinen Zweck, als ob dieser Wert eine leere Zeichenfolge wäre, die Sie ohnehin nur zu einer leeren Zeichenfolge zusammenführen würden.Diese einfache Kombination von COALESCE und NULLIF sollte den Trick machen:
Hinweis: Fügen Sie eine weitere leere Zeichenfolge als letztes COALESCE-Argument hinzu, wenn die Anweisung eine leere Zeichenfolge anstelle von NULL zurückgeben soll, wenn beide Werte NULL sind.
quelle
Ich weiß, dass dies ein alter Thread ist, aber ich habe gerade einen der früheren Beiträge oben gesehen und er ist nicht korrekt.
Wenn Sie LEN (...) verwenden, um festzustellen, ob das Feld NULL oder LEER ist, müssen Sie es wie folgt verwenden:
quelle
Hier ist eine Lösung, aber ich weiß nicht, ob es die beste ist ...
quelle
quelle
diese Syntax:
arbeitete für mich in Microsoft SQL Server 2008 (SP3)
quelle
So verhindern Sie die Datensätze mit
Empty
oderNull
Wert im SQL-Ergebniswir können einfach hinzufügen
..... WHERE Column_name != '' or 'null'
quelle
quelle
[Spaltenname]> '' schließt Nullen und leere Zeichenfolgen aus. Zwischen den einfachen Anführungszeichen steht ein Leerzeichen.
quelle
Dies ist auch für Räume geeignet.
quelle