Gostaria de saber se existem diferenças entre os dois not equal
operadores <>
e !=
no Oracle.
Existem casos em que eles podem dar resultados diferentes ou desempenho diferente?
Gostaria de saber se existem diferenças entre os dois not equal
operadores <>
e !=
no Oracle.
Existem casos em que eles podem dar resultados diferentes ou desempenho diferente?
Respostas:
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 é<>
IS NOT
equivalente / synonomous / .. para <>
e !=
? Todos os três podem ser usados da mesma maneira?
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).
NOT(x = y)
, talvez !(x = y)
, etc?
^=
(vi pela primeira vez quando publiquei o link no manual). Mas o seu ponto de vista sobre as consultas em cache é bom.
Oracle
, booleano não é do tipo de primeira classe SQL
(diferente de PL/SQL
). I. e. você não pode SELECT 1 = 1 FROM dual
gostar de alguns outros sistemas. Portanto, os booleanos têm seu próprio conjunto de operadores válidos apenas em contextos lógicos ( WHERE
ou em HAVING
cláusulas semelhantes). NOT
é o único operador de negação booleana no Oracle SQL
(AFAIK).
¬= -- 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. :-)
Na universidade, aprendemos que a "melhor prática" era usar! = Ao trabalhar para empregadores, embora todos os operadores acima tenham a mesma funcionalidade.
<>
como o operador "não é igual a". Então, eu consideraria usar isso como a "melhor prática"
<>
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.
De acordo com este artigo,! = Executa mais rapidamente