Ich habe gesehen SQL
die sowohl !=
y <>
para nicht gleich . Was ist die bevorzugte Syntax und warum?
Ich mag !=
denn <>
Erinnert mich an Visual Basic
.
Ich habe gesehen SQL
die sowohl !=
y <>
para nicht gleich . Was ist die bevorzugte Syntax und warum?
Ich mag !=
denn <>
Erinnert mich an Visual Basic
.
Eine Alternative wäre die Verwendung des NULLIF-Operators anstelle von <>
o !=
die NULL zurückgibt, wenn die beiden Argumente gleich sind NULLIF in Microsoft Docs . Ich glaube also, dass die WHERE-Klausel geändert werden kann für <>
y !=
wie folgt:
NULLIF(arg1, arg2) IS NOT NULL
Ich habe festgestellt, dass die Verwendung von <>
y !=
funktioniert in manchen Fällen nicht für das Datum. Die Verwendung des obigen Ausdrucks ist daher sehr hilfreich.
Ich bin nicht sicher, ob diese Funktion genauso gut funktioniert wie <>
in Bezug auf die Indexnutzung in allen Eckfällen. Außerdem ist die Lesbarkeit sicherlich viel schlechter...
Wie ich in der Antwort erwähnt habe, hat das bei mir mit den Datumsfeldern im Jahr 2014 funktioniert. Ich bin mir nicht sicher, was die Klausel/Bedingung war, die andere Antworten einschränkte, aber wenn ich mir einige der Bewertungen ansehe, scheint dies auch anderen zu helfen.
Sie werden beide in T-SQL akzeptiert. Es scheint jedoch, dass die Verwendung von <>
funktioniert viel schneller als !=
. Ich habe gerade eine komplexe Abfrage ausgeführt, die mit !=
und dauerte im Durchschnitt etwa 16 Sekunden. Ich änderte sie in <>
und die Abfrage dauert jetzt im Durchschnitt etwa 4 Sekunden. Das ist eine enorme Verbesserung!
Wenn Sie zwei ähnliche Abfragen nacheinander in SQL Server ausführen, hat dieser wahrscheinlich Daten im Speicher zwischengespeichert und für ähnliche Abfragen optimiert. Wenn Sie dies in umgekehrter Reihenfolge tun, könnten Sie das gegenteilige Ergebnis erhalten!
Auch das ist falsch, denn sie würden nicht zwei Betreiber haben, die genau gleich funktionieren und von denen einer "einfach so" langsamer ist. Es gibt viele Faktoren, die dazu beitragen, dass ein und dieselbe Abfrage zu unterschiedlichen Ausführungszeiten führt.
Obwohl sie auf die gleiche Weise funktionieren, !=
bedeutet genau "nicht gleich", während <>
bedeutet größer als und kleiner als der gespeicherte Wert.
Erwägen Sie >=
o <=
und dies wird sinnvoll sein, wenn Sie Ihre Indizes in Abfragen einbeziehen... <>
in einigen Fällen schneller laufen (mit dem richtigen Index), in anderen Fällen (ohne Index) jedoch genauso schnell.
Dies hängt auch davon ab, wie Ihr Datenbanksystem die Werte liest !=
y <>
. Der Datenbankanbieter kann es einfach abkürzen und dafür sorgen, dass sie gleich funktionieren, so dass es so oder so keinen Vorteil gibt. PostgreSQL und SQL Server kürzen dies nicht ab; es wird so gelesen, wie es oben steht.
Haben Sie irgendwelche Belege für Ihre Aussage? Beide Betreiber scheinen genau dasselbe zu sein PostgreSQL , Oracle et MySQL .
Das ist völlig falsch, es mag für Sie wie "größer und kleiner als der gespeicherte Wert" aussehen, wenn Sie diese Zeichen in Ihrem Kopf kombinieren, aber für den Lexer ist es nur eine andere Art, das Token darzustellen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
7 Stimmen
Siehe auch: stackoverflow.com/questions/7884/
1 Stimmen
Übertragbarkeit des Codes. Wenn Ihre Anforderungen durch ANSI-SQL leicht erfüllt werden können, ist es besser, es zu verwenden. Sie können denselben Code in allen DBs verwenden. Z.B. ein SQL-Buchautor, der die Grundlagen von SQL anhand von Beispielcode veranschaulichen möchte.
2 Stimmen
Ich möchte ein Beispiel hinzufügen, bei dem nur ANSI-SQL-Code ein Problem sein kann - Standard-SQL unterstützt die Optionen NULLS FIRST und NULLS LAST, um zu steuern, wie NULLs sortiert werden, aber T-SQL unterstützt diese Option nicht.
1 Stimmen
Es gibt keinen Grund für eine Wiedereröffnung. Die markierte Frage ist ein Duplikat, nur erweitert um eine weitere Option,
NOT (A = B)
.1 Stimmen
@Steam, Sie sollten angeben, auf welche Jahresversion von ansi sql Sie sich genau beziehen. Bei einigen dieser Versionen müssen Sie sogar die Kompatibilität der Ebenen oder die genauen Teile des Standards angeben. Welche dieser Versionen hat NULLS FIRST und NULLS LAST eingeführt?
2 Stimmen
Die Tatsache, dass es Sie an Visual Basic erinnert, ist ein schlechter Grund. Diese Frage kann sicherlich ohne diese Meinung auskommen. Ein besserer Grund wäre der Grund in einer der Antworten, wo SQL in XML gespeichert wird. Ich bin mir nicht sicher, warum man SQL in XML speichern sollte, aber es ist trotzdem ein besserer Grund.
0 Stimmen
An bestimmten Stellen, an denen T-SQL in XML, HTML und andere Auszeichnungssprachen eingebettet ist, ist es vorzuziehen, "!=" zu verwenden, auch wenn es nicht ANSI ist, solange Sie beabsichtigen, im TSQL-Bereich zu bleiben (Microsoft-Stack)