Gibt es einen Unterschied zwischen "! =" Und "<>" in Oracle SQL?

123

Ich würde gerne wissen, ob es Unterschiede zwischen den beiden not equalBetreibern <>und !=in Oracle gibt.

Gibt es Fälle, in denen sie unterschiedliche Ergebnisse oder unterschiedliche Leistungen liefern können?

Mesop
quelle
5
Mögliches Duplikat von Oracle Not Equals Operator
Mesop
1
Mögliches Duplikat von Oracle Not Equals Operator

Antworten:

109

Nein, es gibt überhaupt keinen Unterschied in der Funktionalität.
(Gleiches gilt für alle anderen DBMS - die meisten unterstützen beide Stile):

Hier ist die aktuelle SQL-Referenz: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Der SQL-Standard definiert nur einen einzelnen Operator für " ungleich "<>

ein Pferd ohne Name
quelle
14
! = ist einfacher in einer XML-Datei zu speichern!
Mark McLaren
Ist IS NOTäquivalent / synonom / / zu <>und !=? Können alle drei gleich verwendet werden?
Verrückt nach Natty
50

Tatsächlich gibt es vier Formen dieses Operators:

<>
!=
^=

und selbst

¬= -- worked on some obscure platforms in the dark ages

Diese sind gleich, werden jedoch unterschiedlich behandelt, wenn eine wörtliche Übereinstimmung erforderlich ist (gespeicherte Konturen oder zwischengespeicherte Abfragen).

Quassnoi
quelle
2
Und Variationen wie NOT(x = y)vielleicht !(x = y)usw.?
MatBailie
1
Interessant! Ich wusste nichts über das ^=(habe es selbst gesehen, als ich den Link zum Handbuch gepostet habe). Ihr Standpunkt zu zwischengespeicherten Abfragen ist jedoch gut.
a_horse_with_no_name
1
@Dems: in Oracle, boolean ist kein erstklassiger Typ in SQL(der sich von unterscheidet PL/SQL). I. e. Sie können SELECT 1 = 1 FROM dualin einigen anderen Systemen nicht mögen. So booleans haben ihren eigenen Satz von Operatoren gelten nur in logischen Kontexten ( WHEREoder HAVINGoder ähnliche Klauseln). NOTist der einzige boolesche Negationsoperator in Oracle SQL(AFAIK).
Quassnoi
3
¬= -- worked on some obscure platforms in the dark ages- Ja, sie wurden "IBM Mainframes" genannt. Von den Tagen an, als Männer Männer waren, Frauen Frauen waren, Dinosaurier die Erde durchstreiften und Computer wassergekühlt waren. :-)
Bob Jarvis - Reinstate Monica
1

An der Universität wurde uns beigebracht, "Best Practice" zu verwenden! = Bei der Arbeit für Arbeitgeber, obwohl alle oben genannten Betreiber die gleiche Funktionalität haben.


quelle
14
Der SQL-Standard (nur) definiert <>als den Operator "ungleich". Daher würde ich in Betracht ziehen, dies als "Best Practice" zu verwenden
a_horse_with_no_name
2
Interessant. Möglicherweise muss überprüft werden, ob alles andere, was mir beigebracht wurde, dem SQL-Standard entspricht oder nicht. Vielen Dank für den Hinweis.
11
Wahrscheinlich kommt mein C-Erbe heraus, aber ich kann es nicht ertragen <>und vorziehen !=. Hauptsächlich, weil <>in seinem Sprichwort "kleiner als oder größer als" für mich anzunehmen scheint, dass der Datentyp eine implizite Reihenfolge hat (was nicht unbedingt wahr ist, obwohl es für alle SQL-Datentypen gilt), während !="nicht gleich" heißt. in einem sehr reinen Sinne.
Jeffrey Kemp
1
Kodierungsstandards sind häufig arbeitgeberabhängig. Wenn Ihr Arbeitgeber keinen Kodierungsstandard hat, ist es für das Team eine gute Idee, einen öffentlichen auszuwählen.
Denise Skidmore
-3

Laut diesem Artikel arbeitet! = Schneller

http://www.dba-oracle.com/t_not_equal_operator.htm

user5063308
quelle
18
Obwohl diese Website beliebt ist, ist sie zu vielen Themen leider keine verlässliche Quelle. Dieses Problem wurde bereits hier erörtert . Trotz der Prämie konnte niemand einen Testfall erstellen, der einen spürbaren Leistungsunterschied aufwies. Aber mein Angebot bleibt bestehen - ich gebe Ihnen ein Kopfgeld von 500 Punkten, wenn Sie einen Testfall erstellen können, der zeigt, dass! = Schneller ist als andere ungleiche Operatoren.
Jon Heller