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


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


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


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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.