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):
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é.
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.
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.
Réponses:
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
<>
la source
IS NOT
équivalent / synonome / .. à<>
et!=
? Les trois peuvent-ils être utilisés de la même manière?En fait, il existe quatre formes de cet opérateur:
et même
qui sont identiques, mais traités différemment lorsqu'une correspondance verbatim est requise (contours stockés ou requêtes mises en cache).
la source
NOT(x = y)
, peut!(x = y)
- être , etc.?^=
(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.Oracle
, boolean n'est pas un type de première classe inSQL
(qui est différent dePL/SQL
). C'est à dire. vous ne pouvez pasSELECT 1 = 1 FROM dual
aimer dans d'autres systèmes. Alors booléens ont leur propre ensemble d'opérateurs valides que dans des contextes logiques (WHERE
ouHAVING
ou clauses similaires).NOT
est le seul opérateur de négation booléenne dans OracleSQL
(AFAIK).¬= -- 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. :-)À 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é.
la source
<>
comme l'opérateur "pas égal".<>
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.Selon cet article,! = Fonctionne plus rapidement
http://www.dba-oracle.com/t_not_equal_operator.htm
la source