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
.
Die meisten Datenbanken unterstützen !=
(gängige Programmiersprachen) und <>
(ANSI).
Datenbanken, die beides unterstützen !=
y <>
:
!=
y <>
!=
y <>
!=
y <>
!=
y <>
!=
y <>
!=
y <>
!=
y <>
!=
y <>
!=
y <>
!=
y <>
Datenbanken, die den ANSI-Standardoperator unterstützen, ausschließlich :
Django ORM Query Maps zu NOT (a = b)
anstelle von (a <> b)
o (a != b)
. Ist es intern dasselbe?
@buffer, sie sind logischerweise dasselbe, d. h. es würde dieselbe Menge von Zeilen abgleichen oder ausschließen. Aber ob eine bestimmte RDBMS-Marke das Gleiche optimiert, hängt von der Implementierung ab. Es würde mich daher überraschen, wenn es Unterschiede zwischen den verschiedenen Datenbankmarken gäbe.
Technisch gesehen funktionieren sie gleich, wenn Sie SQL Server AKA T-SQL verwenden. Wenn Sie sie in gespeicherten Prozeduren verwenden, gibt es keinen Leistungsgrund, die eine oder die andere zu verwenden. Dann kommt es auf die persönliche Vorliebe an. Ich bevorzuge <>, da es ANSI-konform ist.
Links zu den verschiedenen ANSI-Normen finden Sie unter...
Ich hatte es immer vorgezogen, die !=
weil es in jeder C-beeinflussten Sprache, die ich benutzt habe, vorhanden ist, und weil die Python-Dokumentation sagt: "Die Formulare <>
et !=
sind gleichwertig; aus Gründen der Kohärenz mit C, !=
bevorzugt wird; wobei !=
ist nachstehend aufgeführt <>
wird ebenfalls akzeptiert. Die <>
Die Rechtschreibung gilt als veraltet." Aber SQL ist nicht Python!
Ja; Microsoft selbst empfiehlt die Verwendung von <>
en !=
speziell für die ANSI-Konformität, z.B. in der Microsoft Press-Schulungsmappe für die Prüfung 70-461, "Querying Microsoft SQL Server", heißt es: "Als Beispiel dafür, wann die Standardform zu wählen ist, unterstützt T-SQL zwei "nicht gleich"-Operatoren: <> und !=. Der erste ist Standard, der zweite nicht. In diesem Fall sollte es kein Problem sein, sich für die Standardform zu entscheiden!"
'<>'
ist vom SQL-92-Standard y '!='
es un proprietär T-SQL-Operator. Er ist auch in anderen Datenbanken verfügbar, aber da er nicht zum Standard gehört, müssen Sie ihn von Fall zu Fall einsetzen.
In den meisten Fällen wissen Sie, mit welcher Datenbank Sie sich verbinden, so dass dies nicht wirklich ein Problem ist. Schlimmstenfalls müssen Sie in Ihrem SQL suchen und ersetzen.
Können wir eine so weit verbreitete Erweiterung der Standardsprache weiterhin als proprietär ein? Zum jetzigen Zeitpunkt scheint es, dass die Norm aktualisiert werden sollte, um beide Syntaxen vorzuschreiben oder zumindest zuzulassen.
@JohanBoule Nun, es gibt einen schriftlichen Standard für SQL und meines Wissens nach !=
ist nicht Teil davon. Auch wenn es sich in der Praxis um einen Defacto-Standard handelt, sollten wir nicht verwechseln, was Standardmerkmale sind und was nicht.
Der ANSI SQL Standard definiert <>
als "nicht gleich"-Operator,
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt ( 5.2 <token> and <separator>
)
Es gibt keine !=
Operator nach dem ANSI/SQL 92-Standard.
Sie wissen schon, dass der 92er Standard mehr als 25 Jahre alt ist? ..... Wenn Sie SQL nach einem 25 Jahre alten Standard schreiben, mache ich mir ein wenig Sorgen um Ihren Code, ehrlich gesagt.....
@Yunfei Chen Der Punkt ist nicht, dass die Leute wahrscheinlich in einem System schreiben, das nur unterstützt Dinge, die im ANSI/SQL 92-Standard enthalten sind. Der Punkt ist, dass Dinge, die im ANSI/SQL 92-Standard enthalten sind, eine breitere und konsistente Abdeckung in Datenbanksystemen haben als Dinge, die nicht im Standard enthalten sind. Das ist Grund genug, "<>" zu bevorzugen. Wenn jemand ein neues DBMS entwickelt, auf das Ihr bestehender Datenbankcode eines Tages portiert werden könnte, und es nur einen der beiden Operatoren unterstützt, ist es sehr viel wahrscheinlicher, dass es "<>" ist als "!=".
<>
ist das gültige SQL nach dem SQL-92-Standard.
http://msdn.microsoft.com/en-us/library/aa276846(SQL.80).aspx
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)