! = 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).
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.
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.
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.
Antworten:
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 "
<>
quelle
IS NOT
äquivalent / synonom / / zu<>
und!=
? Können alle drei gleich verwendet werden?Tatsächlich gibt es vier Formen dieses Operators:
und selbst
Diese sind gleich, werden jedoch unterschiedlich behandelt, wenn eine wörtliche Übereinstimmung erforderlich ist (gespeicherte Konturen oder zwischengespeicherte Abfragen).
quelle
NOT(x = y)
vielleicht!(x = y)
usw.?^=
(habe es selbst gesehen, als ich den Link zum Handbuch gepostet habe). Ihr Standpunkt zu zwischengespeicherten Abfragen ist jedoch gut.Oracle
, boolean ist kein erstklassiger Typ inSQL
(der sich von unterscheidetPL/SQL
). I. e. Sie könnenSELECT 1 = 1 FROM dual
in einigen anderen Systemen nicht mögen. So booleans haben ihren eigenen Satz von Operatoren gelten nur in logischen Kontexten (WHERE
oderHAVING
oder ähnliche Klauseln).NOT
ist der einzige boolesche Negationsoperator in OracleSQL
(AFAIK).¬= -- 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. :-)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
<>
als den Operator "ungleich". Daher würde ich in Betracht ziehen, dies als "Best Practice" zu verwenden<>
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.Laut diesem Artikel arbeitet! = Schneller
http://www.dba-oracle.com/t_not_equal_operator.htm
quelle