Dois-je utiliser!= ou pour ne pas égaux en T-SQL?

j'ai vu SQL qui utilise à la fois != et <> pour pas égal . Quelle est la syntaxe préférée et pourquoi?

j'aime != , parce que <> me rappelle Visual Basic .

697
demandé sur DineshDB 2009-04-07 00:56:15

14 réponses

techniquement, ils fonctionnent de la même façon si vous utilisez SQL Server alias T-SQL. Si vous l'utilisez dans des procédures stockées il n'y a aucune raison d'utiliser l'un sur l'autre. Il s'agit alors de préférence personnelle. Je préfère utiliser <> car il est compatible ANSI.

vous pouvez trouver des liens vers les différentes normes ANSI à...

http://en.wikipedia.org/wiki/SQL

464
répondu DBAndrew 2017-09-01 19:28:15

la Plupart des bases de données de soutien != (les langages de programmation courants) et <> (ANSI).

bases de données supportant à la fois != et <> :

bases de données qui supportent l'opérateur standard ANSI, exclusivement :

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>
667
répondu Bill Karwin 2016-12-14 10:05:27

'<>' est de la standard SQL-92 et '!=' est un propriétaire t-opérateur SQL. Il est disponible dans d'autres bases de données, mais comme il n'est pas standard, vous devez le prendre au cas par cas.

dans la plupart des cas, vous savez à quelle base de données vous vous connectez donc ce n'est pas vraiment un problème. Au pire, vous pourriez avoir à faire une recherche et remplacer dans votre SQL.

94
répondu Adam Lassek 2017-03-29 16:38:46

la norme ANSI SQL définit <> comme" n'égale pas "l'opérateur,

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt ( 5.2 <token> and <separator> )

il n'y a pas d'opérateur != selon la norme ANSI/SQL 92.

37
répondu Mehrdad Afshari 2010-11-01 06:49:25

<> est le SQL valide selon la norme SQL-92.

http://msdn.microsoft.com/en-us/library/aa276846 (SQL.80).aspx

23
répondu Justin Niessner 2017-05-06 06:50:41
18
répondu madcolor 2017-04-20 11:33:43

il semble que Microsoft eux-mêmes préfèrent <> à != comme en témoignent leurs contraintes de tableau. Personnellement, je préfère utiliser != parce que j'ai clairement lu que "pas égal", mais si vous entrez [field1 != field2] et sauvegardez-le comme une contrainte, la prochaine fois que vous le questionnez, il apparaîtra comme [field1 <> field2] . Cela me dit que la bonne façon de le faire est <> .

14
répondu Kyle 2017-05-06 06:51:44

!= , bien que n'étant pas ANSI, est plus dans le véritable esprit de SQL comme un langage lisible. Il crie n'est pas égal. <> dit que c'est à moi (inférieur, supérieur) qui est juste bizarre. Je sais que l'intention est que ce soit moins que ou plus grand que donc pas égal, mais c'est une façon très compliquée de dire quelque chose de vraiment simple.

j'ai juste eu à prendre quelques longues requêtes SQL et les placer avec amour dans un fichier XML pour un tas entier de stupides raisons pour lesquelles je n'entrerai pas dans les.

suffit de dire XML n'est pas du tout avec <> et j'ai dû les changer en != et ME vérifier avant que je riggedy s'est ruiné.

13
répondu Fat Albert 2017-05-06 06:52:23

vous pouvez utiliser celui que vous voulez dans T-SQL. La documentation dit ils ont tous deux fonctionnent de la même manière. Je préfère != , parce qu'il lit" pas égal "à mon (C/C++/C# basé) esprit, mais les gourous de base de données semblent préférer <> .

9
répondu Steve Haigh 2017-04-12 15:13:39

je comprends que la syntaxe C != est en SQL Server en raison de son héritage Unix (retour dans le Sybase SQL Server days, pré Microsoft SQL Server 6.5).

7
répondu Karl 2017-04-04 02:14:57

une alternative serait d'utiliser L'opérateur NULLIF autre que <> ou != qui renvoie NULL si les deux arguments sont égaux NULLIF dans Microsoft Docs . Donc je crois que la clause peut être modifiée pour <> et != comme suit:

NULLIF(arg1, arg2) IS NOT NULL

que j'ai découvert ce, à l'aide de <> et != ne fonctionne pas pour la date dans certains cas. Par conséquent, l'utilisation de l'expression ci-dessus needful.

4
répondu jitendrapurohit 2017-05-10 10:26:59

j'ai préféré utiliser != au lieu de <> parce que parfois j'utilise la syntaxe <s></s> pour écrire des commandes SQL. L'utilisation de != est plus pratique pour éviter les erreurs de syntaxe dans ce cas.

0
répondu Andrea Antonangeli 2017-06-10 17:57:49

ils sont tous les deux acceptés en T-SQL. Cependant, il semble que l'utilisation de <> fonctionne beaucoup plus rapidement que != . Je viens de lancer une requête complexe qui utilisait != , et il a fallu environ 16 secondes en moyenne pour lancer. Je les ai changées en <> et la requête prend maintenant environ 4 secondes en moyenne pour s'exécuter. C'est une énorme amélioration!

-4
répondu Hamlet Javier 2017-03-29 16:43:18

bien qu'ils fonctionnent de la même façon, != signifie exactement" pas égal à", tandis que <> signifie supérieur et inférieur à la valeur stockée.

prendre en considération >= ou <= , et cela a du sens lorsque l'affacturage dans votre index pour les requêtes... <> courir plus vite dans certains cas (avec l'index droit), mais dans d'autres cas (indice de libre), ils vont courir tout de même.

Cela dépend aussi de la façon dont votre bases de données système lit les valeurs != et <> . Le fournisseur de base de données peut simplement le raccourcir et les faire fonctionner de la même façon, donc il n'y a aucun avantage de toute façon. PostgreSQL et SQL Server ne raccourcissent pas cela; il est lu tel qu'il apparaît ci-dessus.

-9
répondu Kevin Kinchen 2017-03-29 16:44:59