Sie bedeuten nicht das Gleiche.
name is not null
Diese prüft, ob Datensätze, in denen der Name Feld
isnull(name,'') <> name
Dieses man den Wert von Null-Felder auf die leere Zeichenfolge ändert, so dass sie in einem Vergleich null verwendet werden kann. In SQL Server (aber nicht in Oracle denke ich), wenn ein Wert Null ist und es verwendet wird, um Equlaity oder Ungleichheit zu vergleichen, wird es nicht berücksichtigt, weil Null bedeutet, dass ich den Wert nicht kenne und somit kein tatsächlicher Wert ist.Wenn Sie also sicherstellen möchten, dass die Nullsätze beim Vergleich berücksichtigt werden, benötigen Sie ISNULL oder COALESCE (was der ASCII-STANDARD-Ausdruck ist, der verwendet wird, da ISNULL nicht in allen Datenbanken funktioniert).
Was sollten Sie suchen ist die differnece zwischen
isnull(a.name,'') <> b.name
a.name <> b.name
dann werden Sie verstehen, warum die ISNULL benötigt wird, korrekte Ergebnisse zu erhalten.
Martin Smith ist richtig, wenn Sie den Code genau angeben. WENN es tatsächlich so etwas wie isnull (name, '') <> @name ist, dann hält man SQL davon ab, einen Index zu verwenden, aber man erhält ein Ergebnis, das mehr wie Donnie beschreibt: – Matt
@Matt: Ja, ich habe einen Fehler gemacht Code gab ich in dem Beispiel. Es ist jetzt behoben. – tgandrews