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


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 "<>


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).


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.


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.