it-swarm.com.de

Soll ich! = Oder <> für ungleich in T-SQL verwenden?

Ich habe SQL gesehen, das sowohl != als auch <> für ungleich verwendet . Was ist die bevorzugte Syntax und warum?

Ich mag !=, weil <> mich an Visual Basic erinnert.

769
Bob The Janitor

Technisch funktionieren sie genauso, wenn Sie SQL Server AKA T-SQL verwenden. Wenn Sie es in gespeicherten Prozeduren verwenden, gibt es keinen Leistungsgrund, um übereinander zu verwenden. Es kommt dann auf die persönlichen Vorlieben an. Ich bevorzuge die Verwendung von <>, da es ANSI-kompatibel ist.

Links zu den verschiedenen ANSI-Standards finden Sie unter ...

http://en.wikipedia.org/wiki/SQL

515
DBAndrew

Die meisten Datenbanken unterstützen _!=_ (beliebte Programmiersprachen) und _<>_ (ANSI).

Datenbanken, die sowohl _!=_ als auch _<>_ unterstützen:

Datenbanken, die ausschließlich den ANSI-Standardoperator unterstützen :

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>
703
Bill Karwin

'<>' ist vom SQL-92-Standard und '!=' ist ein proprietärer T-SQL-Operator. Es ist auch in anderen Datenbanken verfügbar, aber da es nicht Standard ist, müssen Sie es von Fall zu Fall prüfen.

In den meisten Fällen wissen Sie, zu welcher Datenbank Sie eine Verbindung herstellen, sodass dies kein wirkliches Problem darstellt. Im schlimmsten Fall müssen Sie möglicherweise in Ihrem SQL-Code suchen und ersetzen.

105
Adam Lassek

Der ANSI-SQL-Standard definiert <> als den Operator "ungleich".

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (5.2 <token> and <separator>)

Es gibt keinen != -Operator gemäß dem ANSI/SQL 92-Standard.

42
Mehrdad Afshari

<> ist das gültige SQL gemäß dem SQL-92-Standard.

http://msdn.Microsoft.com/en-us/library/aa276846 (SQL.80) .aspx

32
Justin Niessner
22
madcolor

Offenbar zieht Microsoft selbst <>!= vor, wie sich aus den Einschränkungen in den Tabellen ergibt. Ich persönlich bevorzuge die Verwendung von !=, da ich das eindeutig als "ungleich" gelesen habe. Wenn Sie jedoch [field1 != field2] eingeben und als Einschränkung speichern, wird es bei der nächsten Abfrage als [field1 <> field2] angezeigt. Dies sagt mir, dass der richtige Weg, dies zu tun, <> ist.

17
Kyle

!= entspricht, obwohl es sich nicht um ANSI handelt, eher dem Geist von SQL als einer lesbaren Sprache. Es schreit nicht gleich. <> sagt, dass es für mich (kleiner als, größer als) einfach komisch ist. Ich weiß, dass die Absicht ist, dass es entweder kleiner als oder größer als ist und daher nicht gleich ist, aber das ist eine wirklich komplizierte Art, etwas wirklich Einfaches auszudrücken.

Ich musste nur einige lange SQL-Abfragen nehmen und sie liebevoll in eine XML-Datei platzieren, aus einer ganzen Reihe von dummen Gründen, auf die ich nicht näher eingehen werde.

Es genügt zu sagen, dass XML mit <> überhaupt nicht funktioniert, und ich musste sie in != ändern und mich selbst überprüfen, bevor ich mich selbst zerstörte.

15
Fat Albert

Sie können in T-SQL verwenden, was Sie möchten. Die Dokumentation sagt, dass beide gleich funktionieren. Ich bevorzuge !=, weil es "nicht gleich" zu meinem (C/C++/C # -basierten) Verstand lautet, aber Datenbank-Gurus scheinen <> zu bevorzugen.

11
Steve Haigh

Ich verstehe, dass die C-Syntax != aufgrund ihres Unix-Erbes in SQL Server ist (in den Tagen von Sybase SQL Server vor Microsoft SQL Server 6.5).

9
Karl

Eine Alternative wäre die Verwendung des anderen NULLIF-Operators als <> oder !=, der NULL zurückgibt, wenn die beiden Argumente gleich sind NULLIF in Microsoft Docs . Ich glaube also, dass die WHERE-Klausel für <> und != wie folgt geändert werden kann:

NULLIF(arg1, arg2) IS NOT NULL

Da ich festgestellt habe, dass die Verwendung von <> und != in einigen Fällen für Datumsangaben nicht funktioniert. Daher tut die Verwendung des obigen Ausdrucks das Notwendige.

5
jitendrapurohit

Ich habe es vorgezogen, != anstelle von <> zu verwenden, da ich manchmal die <s></s> -Syntax verwende, um SQL-Befehle zu schreiben. Die Verwendung von != ist in diesem Fall praktischer, um Syntaxfehler zu vermeiden.

1