¿Hay alguna diferencia entre "! =" Y "<>" en Oracle Sql?

Respuestas:

109

No, no hay ninguna diferencia en la funcionalidad.
(Lo mismo es cierto para todos los demás DBMS, la mayoría de ellos admiten ambos estilos):

Aquí está la referencia SQL actual: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

El estándar SQL solo define un único operador para " no es igual " y eso es<>

un caballo sin nombre
fuente
14
! = es más fácil de almacenar en un archivo XML!
Mark McLaren
¿Es IS NOTequivalente / sinónimo / .. a <>y !=? ¿Se pueden usar los tres de la misma manera?
loco por natty
50

En realidad, hay cuatro formas de este operador:

<>
!=
^=

e incluso

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

que son iguales, pero se tratan de manera diferente cuando se requiere una coincidencia literal (contornos almacenados o consultas en caché).

Quassnoi
fuente
2
¿Y variaciones como NOT(x = y), tal vez !(x = y), etc.?
MatBailie
1
¡Interesante! No sabía sobre el ^=(lo vi yo mismo la primera vez que publiqué el enlace al manual). Pero su punto sobre las consultas en caché es bueno.
a_horse_with_no_name
1
@Dems: in Oracle, boolean no es un tipo de primera clase SQL(que es diferente de PL/SQL). I. e. no te puede SELECT 1 = 1 FROM dualgustar en algunos otros sistemas. Por lo tanto, los booleanos tienen su propio conjunto de operadores válidos solo en contextos lógicos ( WHEREo HAVINGcláusulas similares). NOTes el único operador de negación booleana en Oracle SQL(AFAIK).
Quassnoi
3
¬= -- worked on some obscure platforms in the dark ages- Sí, se llamaron "mainframes de IBM". Desde los días en que los hombres eran hombres, las mujeres eran mujeres, los dinosaurios deambulaban por la tierra y las computadoras se enfriaban con agua. :-)
Bob Jarvis - Restablece a Monica el
1

En la universidad nos enseñaron que 'la mejor práctica' era usar! = Cuando trabajaba para empleadores, aunque todos los operadores anteriores tienen la misma funcionalidad.


fuente
14
El estándar SQL (solo) se define <>como el operador "no igual". Así que consideraría usar eso como la "mejor práctica"
a_horse_with_no_name
2
Interesante. Puede que tenga que verificar todo lo demás que me han enseñado es del estándar SQL o no. Gracias por mencionarlo.
11
Probablemente salga mi herencia C, pero no puedo soportarlo <>y prefiero !=. Principalmente porque <>al decir "menor o mayor que", para mí, parece suponer que el tipo de datos tiene un orden implícito (que no es necesariamente cierto, aunque es cierto para todos los tipos de datos SQL), mientras !=que dice "no igual" en un sentido muy puro
Jeffrey Kemp
1
Los estándares de codificación a menudo dependen del empleador. Si su empleador no tiene un estándar de codificación, es una buena idea que el equipo elija uno público.
Denise Skidmore
-3

De acuerdo con este artículo,! = Funciona más rápido

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

usuario5063308
fuente
18
Aunque popular, ese sitio web desafortunadamente no es una fuente confiable en muchos temas. Este problema se discutió anteriormente aquí . A pesar de la recompensa, nadie pudo crear un caso de prueba que demostrara una diferencia notable en el rendimiento. Pero mi oferta sigue en pie: te daré una recompensa de 500 puntos si puedes crear un caso de prueba que muestre que! = Es más rápido que otros operadores no iguales.
Jon Heller