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.
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
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.
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 é
<>
fonte
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
que são iguais, mas tratados de maneira diferente quando uma correspondência literal é necessária (contornos armazenados ou consultas em cache).
fonte
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 classeSQL
(diferente dePL/SQL
). I. e. você não podeSELECT 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 emHAVING
cláusulas semelhantes).NOT
é o único operador de negação booleana no OracleSQL
(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.
fonte
<>
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
http://www.dba-oracle.com/t_not_equal_operator.htm
fonte