Y a-t-il une différence entre «! =» Et «<>» dans Oracle Sql?


123

Je voudrais savoir s'il y a des différences entre les deux not equalopérateurs <>et !=dans Oracle.

Y a-t-il des cas où ils peuvent donner des résultats différents ou des performances différentes?


5
duplicata possible d' Oracle Not Equals Operator
Mesop

1

Réponses:


110

Non, il n'y a aucune différence de fonctionnalité.
(La même chose est vraie pour tous les autres SGBD - la plupart d'entre eux prennent en charge les deux styles):

Voici la référence SQL actuelle: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Le standard SQL ne définit qu'un seul opérateur pour « pas égal », c'est-à-dire<>


14
! = est plus facile à stocker dans un fichier XML!
Mark McLaren

Est-ce IS NOTéquivalent / synonome / .. à <>et !=? Les trois peuvent-ils être utilisés de la même manière?
nutty about natty

50

En fait, il existe quatre formes de cet opérateur:

<>
!=
^=

et même

¬= -- worked on some obscure platforms in the dark ages

qui sont identiques, mais traités différemment lorsqu'une correspondance verbatim est requise (contours stockés ou requêtes mises en cache).


2
Et des variations comme NOT(x = y), peut !(x = y)- être , etc.?
MatBailie

1
Intéressant! Je ne connaissais pas le ^=(je l'ai vu moi-même la première fois lorsque j'ai posté le lien vers le manuel). Mais votre point sur les requêtes mises en cache est bon.
a_horse_with_no_name

1
@Dems: in Oracle, boolean n'est pas un type de première classe in SQL(qui est différent de PL/SQL). C'est à dire. vous ne pouvez pas SELECT 1 = 1 FROM dualaimer dans d'autres systèmes. Alors booléens ont leur propre ensemble d'opérateurs valides que dans des contextes logiques ( WHEREou HAVINGou clauses similaires). NOTest le seul opérateur de négation booléenne dans Oracle SQL(AFAIK).
Quassnoi

3
¬= -- worked on some obscure platforms in the dark ages- ouais, ils s'appelaient "mainframes IBM". Depuis l'époque où les hommes étaient des hommes, les femmes étaient des femmes, les dinosaures parcouraient la terre et les ordinateurs étaient refroidis à l'eau. :-)
Bob Jarvis - Réintégrer Monica

1

À l'université, on nous a enseigné que la «meilleure pratique» était d'utiliser! = Quand on travaillait pour des employeurs, bien que tous les opérateurs ci-dessus aient la même fonctionnalité.


14
La norme SQL (uniquement) définit <>comme l'opérateur "pas égal".
J'envisagerais

2
Intéressant. Il faudra peut-être vérifier que tout ce que j'ai appris est conforme à la norme SQL ou non. Merci de l'avoir signalé.

11
Probablement mon héritage C qui sort, mais je ne peux pas supporter <>et préférer !=. Principalement parce que <>dans son énoncé «inférieur ou supérieur à», pour moi, il semble supposer que le type de données a un ordre implicite (ce qui n'est pas nécessairement vrai, même si c'est vrai pour tous les types de données SQL), alors que !=c'est dire «pas égal» dans un sens très pur.
Jeffrey Kemp

1
Les normes de codage dépendent souvent de l'employeur. Si votre employeur n'a pas de norme de codage, c'est une bonne idée pour l'équipe d'en choisir une publique.
Denise Skidmore

-3

Selon cet article,! = Fonctionne plus rapidement

http://www.dba-oracle.com/t_not_equal_operator.htm


18
Bien que populaire, ce site Web n'est malheureusement pas une source fiable sur de nombreux sujets. Ce problème a été discuté précédemment ici . Malgré la prime, personne n'a pu créer un scénario de test démontrant une différence notable de performances. Mais mon offre tient toujours - je vous donnerai une prime de 500 points si vous pouvez créer un cas de test montrant que! = Est plus rapide que d'autres opérateurs non égaux.
Jon Heller
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.