2012-05-18 38 views
80

Me gustaría saber si hay alguna diferencia entre los dos operadores not equal<> y != en Oracle.¿Hay alguna diferencia entre "! =" Y "<>" en Oracle Sql?

¿Hay casos en que pueden dar resultados diferentes o un rendimiento diferente?

+5

posible duplicado de [Oracle no es igual Operador] (http://stackoverflow.com/questions/4089771/oracle-not-equals-operator) – Mesop

+1

Posible duplicado de [Oracle no es igual para el operador] (https://stackoverflow.com/questions/4089771/oracle-not-equals-operator) –

Respuesta

71

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

Aquí es la corriente de referencia SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

El estándar SQL sólo se define un único operador para "no es igual a "y eso es <>

+4

! = Es más fácil de almacenar en un archivo XML. –

32

En realidad, hay cuatro formas de este operador:

<> 
!= 
^= 

e incluso

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

que son los mismos, pero tratados de forma diferente cuando se requiere un partido pie de la letra (esquemas o consultas en caché almacenada).

+2

Y variaciones como 'NOT (x = y)', tal vez '! (X = y)', etc.? – MatBailie

+1

¡Interesante! No sabía sobre el '^ =' (lo vi por primera vez cuando publiqué el enlace al manual). Pero su punto acerca de las consultas en caché es bueno. –

+1

@Dems: en 'Oracle', boolean no es un tipo de primera clase en' SQL' (que es diferente de 'PL/SQL'). I. e. no puede 'SELECT 1 = 1 FROM dual' como en otros sistemas. Así que los booleanos tienen su propio conjunto de operadores válidos solo en contextos lógicos ('WHERE' o' HAVING' o cláusulas similares). 'NOT' es el único operador de negación booleana en' SQL' (AFAIK) de Oracle. – Quassnoi

1

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

+13

El estándar SQL (solamente) define '<>' como el operador "no igual". Entonces, consideraría usar eso como la "mejor práctica" –

+2

Interesante. Puede que tenga que verificar todo lo demás que me han enseñado es de SQL estándar o no. Gracias por mencionarlo. –

+8

Probablemente mi herencia C salga, pero no soporto '<>' y prefiero '! ='. Principalmente porque '<>' en su frase "menor que 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. –

-2

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

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

+11

Aunque popular, ese sitio web lamentablemente no es una fuente confiable sobre muchos temas. Este problema se discutió anteriormente [aquí] (http://stackoverflow.com/q/12003127/409172).A pesar de la recompensa, nadie fue capaz de 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. –

Cuestiones relacionadas