Me gustaría saber si hay alguna diferencia entre los dos not equal
operadores <>
y !=
en Oracle.
¿Hay casos en los que pueden dar resultados diferentes o un rendimiento diferente?
Me gustaría saber si hay alguna diferencia entre los dos not equal
operadores <>
y !=
en Oracle.
¿Hay casos en los que pueden dar resultados diferentes o un rendimiento diferente?
Respuestas:
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<>
IS NOT
equivalente / sinónimo / .. a <>
y !=
? ¿Se pueden usar los tres de la misma manera?
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é).
NOT(x = y)
, tal vez !(x = y)
, etc.?
^=
(lo vi yo mismo la primera vez que publiqué el enlace al manual). Pero su punto sobre las consultas en caché es bueno.
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 dual
gustar en algunos otros sistemas. Por lo tanto, los booleanos tienen su propio conjunto de operadores válidos solo en contextos lógicos ( WHERE
o HAVING
cláusulas similares). NOT
es el único operador de negación booleana en Oracle SQL
(AFAIK).
¬= -- 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. :-)
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.
<>
como el operador "no igual". Así que consideraría usar eso como la "mejor práctica"
<>
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
De acuerdo con este artículo,! = Funciona más rápido