Existe alguma diferença entre "! =" E "<>" no Oracle Sql?

123

Gostaria de saber se existem diferenças entre os dois not equaloperadores <>e !=no Oracle.

Existem casos em que eles podem dar resultados diferentes ou desempenho diferente?

Mesop
fonte
5
possível duplicado da Oracle não iguala o Operador
Mesop
1
Possível duplicata do Oracle Not Equals Operator

Respostas:

109

Não, não há nenhuma diferença na funcionalidade.
(O mesmo vale para todos os outros DBMS - a maioria deles suporta os dois estilos):

Aqui está a referência atual do SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

O padrão SQL define apenas um único operador para " não é igual a " e que é<>

um cavalo sem nome
fonte
14
! = é mais fácil de armazenar em um arquivo XML!
Mark McLaren
É IS NOTequivalente / synonomous / .. para <>e !=? Todos os três podem ser usados ​​da mesma maneira?
noz sobre natty
50

Na verdade, existem quatro formas desse operador:

<>
!=
^=

e até mesmo

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

que são iguais, mas tratados de maneira diferente quando uma correspondência literal é necessária (contornos armazenados ou consultas em cache).

Quassnoi
fonte
2
E variações como NOT(x = y), talvez !(x = y), etc?
MatBailie 18/05
1
Interessante! Eu não sabia sobre o ^=(vi pela primeira vez quando publiquei o link no manual). Mas o seu ponto de vista sobre as consultas em cache é bom.
A_horse_with_no_name
1
@ Dems: in Oracle, booleano não é do tipo de primeira classe SQL(diferente de PL/SQL). I. e. você não pode SELECT 1 = 1 FROM dualgostar de alguns outros sistemas. Portanto, os booleanos têm seu próprio conjunto de operadores válidos apenas em contextos lógicos ( WHEREou em HAVINGcláusulas semelhantes). NOTé o único operador de negação booleana no Oracle SQL(AFAIK).
Quassnoi 18/05/12
3
¬= -- worked on some obscure platforms in the dark ages- sim, eles foram chamados de "mainframes da IBM". Desde os dias em que homens eram homens, mulheres eram mulheres, dinossauros vagavam pela terra e computadores eram refrigerados a água. :-)
Bob Jarvis - Restabelece Monica
1

Na universidade, aprendemos que a "melhor prática" era usar! = Ao trabalhar para empregadores, embora todos os operadores acima tenham a mesma funcionalidade.


fonte
14
O padrão SQL (apenas) define <>como o operador "não é igual a". Então, eu consideraria usar isso como a "melhor prática"
a_horse_with_no_name
2
Interessante. Pode ter que verificar tudo o que me foi ensinado é do padrão SQL ou não. Obrigado por apontar isso.
11
Provavelmente minha herança C está saindo, mas não suporto <>e prefiro !=. Principalmente porque <>ao dizer "menor que ou maior que", para mim, parece assumir que o tipo de dados tem uma ordem implícita (o que não é necessariamente verdadeiro, embora seja verdadeiro para todos os tipos de dados SQL), enquanto que !=está dizendo "não é igual" em um sentido muito puro.
Jeffrey Kemp
1
Os padrões de codificação geralmente dependem do empregador. Se o seu empregador não tiver um padrão de codificação, é uma boa ideia que a equipe escolha um padrão público.
Denise Skidmore
-3

De acordo com este artigo,! = Executa mais rapidamente

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

user5063308
fonte
18
Embora popular, esse site infelizmente não é uma fonte confiável sobre muitos tópicos. Esse problema foi discutido anteriormente aqui . Apesar da recompensa, ninguém foi capaz de criar um caso de teste demonstrando uma diferença notável no desempenho. Mas minha oferta ainda permanece - darei a você uma recompensa de 500 pontos se você puder criar um caso de teste mostrando que! = É mais rápido que outros operadores não-iguais.
Jon Heller