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
.
Es scheint, dass Microsoft selbst die <>
a !=
wie aus ihren Tabellenbeschränkungen hervorgeht. Ich persönlich bevorzuge die Verwendung von !=
weil ich das eindeutig als "nicht gleich" gelesen habe, aber wenn Sie eingeben [field1 != field2]
und speichern Sie sie als Zwangsbedingung. Wenn Sie sie das nächste Mal abfragen, erscheint sie als [field1 <> field2]
. Dies bedeutet für mich, dass die richtige Vorgehensweise darin besteht <>
.
Sie sind beide gültig und gleich in Bezug auf SQL-Server ,
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
Das ist spezifisch für SQL Server. Zugegeben, er fragt nach SQL Server, aber können Sie eine ANSI-Spezifikation finden, um zu sehen, ob es garantiert portabel ist, für diejenigen von uns, die so etwas wissen möchten?
@Joel Coehoorn, wenn Sie Ihren T-SQL-Code sehr portieren, werden "<>" und "!=" die geringste Ihrer Sorgen sein!!
!=
ist, obwohl es sich nicht um eineANSI-Sprache handelt, mehr im Sinne von SQL als einer lesbaren Sprache. Es schreit nicht gleich. <>
sagt, es ist für mich (kleiner als, größer als), was einfach seltsam ist. Ich weiß, die Absicht ist, dass es entweder weniger als oder größer als ist, also nicht gleich, aber das ist eine wirklich komplizierte Art, etwas wirklich Einfaches zu sagen.
Ich musste gerade einige lange SQL-Abfragen nehmen und sie aus vielen dummen Gründen, auf die ich nicht eingehen werde, liebevoll in eine XML-Datei einfügen.
Es genügt zu sagen, dass XML nicht mit <>
überhaupt nicht und ich musste sie ändern in !=
und mich selbst zu überprüfen, bevor ich mich zu Tode schufte.
Was passiert, wenn jemand eine Abfrage mit einem Weniger-als-Vergleich benötigt? Oder ein anderes reserviertes XML-Symbol? Das ist der seltsamste Grund, den ich je gehört habe, um das eine dem anderen vorzuziehen. Und wenn Sie C-Code schreiben, bevorzugen Sie dann Operatoren, die in XML ohne Escaping ausgedrückt werden können?
Sie können in T-SQL verwenden, was immer Sie wollen. Die Dokumentation sagt, dass sie beide auf die gleiche Weise funktionieren. Ich bevorzuge !=
weil es in meinem (auf C/C++/C# basierenden) Verstand "nicht gleich" lautet, aber Datenbank-Gurus scheinen es vorzuziehen <>
.
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)