896 Stimmen

Sollte ich != oder <> für nicht gleich in T-SQL verwenden?

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 .

7 Stimmen

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.

25voto

Kyle Punkte 355

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

24voto

madcolor Punkte 7987

0 Stimmen

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?

6 Stimmen

@Joel Coehoorn, wenn Sie Ihren T-SQL-Code sehr portieren, werden "<>" und "!=" die geringste Ihrer Sorgen sein!!

1 Stimmen

Die Portierung ist nicht das Problem, sondern die Tatsache, dass man als Entwickler zwischen verschiedenen Umgebungen hin- und herwechseln muss. Konsistenz ist gut.

16voto

Fat Albert Punkte 177

!= 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.

8 Stimmen

Warum nicht einfach CDATA es? was passiert, wenn Ihre Abfrage enthält XML?

5 Stimmen

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?

13voto

Steve Punkte 8371

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

10voto

Karl Punkte 3228

Ich weiß, dass die C-Syntax != ist in SQL Server aufgrund seiner Unix-Herkunft (aus der Zeit von Sybase SQL Server, vor Microsoft SQL Server 6.5).

CodeJaeger.com

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.

Powered by:

X