Pregunta ¿Debo usar! = O <> para no igual en T-SQL?


he visto SQL que usa ambos != y <> para no es igual. ¿Cuál es la sintaxis preferida y por qué?

me gusta !=, porque <> me recuerda a Visual Basic.


683
2018-04-06 20:56


origen


Respuestas:


Técnicamente funcionan de la misma manera si está utilizando SQL Server AKA T-SQL. Si lo está usando en procedimientos almacenados, no hay razón de rendimiento para usar uno sobre el otro. Luego se reduce a preferencia personal. Prefiero usar <> ya que cumple con ANSI.

Puede encontrar enlaces a los diversos estándares ANSI en ...

http://en.wikipedia.org/wiki/SQL


456
2018-04-06 21:29



La mayoría de las bases != (lenguajes de programación populares) y <> (ANSI)

Bases de datos que admiten ambos != y <>:

Bases de datos que soportan el operador estándar ANSI, exclusivamente:

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>

656
2018-04-06 20:59



'<>' es de la Estándar SQL-92 y '!=' es un propiedad Operador T-SQL. También está disponible en otras bases de datos, pero como no es estándar, debe tomarlo caso por caso.

En la mayoría de los casos, sabrá a qué base de datos se está conectando para que esto no sea realmente un problema. En el peor de los casos, puede que tenga que buscar y reemplazar en su SQL.


92
2018-04-06 20:59



El estándar ANSI SQL define <> como el operador "no igual a",

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (5.2 <token> and <separator>)

No hay != operador de acuerdo con el estándar ANSI / SQL 92.


37
2018-04-06 20:58



<> es el SQL válido según el estándar SQL-92.

http://msdn.microsoft.com/en-us/library/aa276846(SQL.80).aspx


23
2018-04-06 20:58



Ambos son válidos y lo mismo con respecto a servidor SQL,

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation


18
2018-02-05 03:19



Parece que los propios de Microsoft prefieren <> a != como se evidencia en sus restricciones de tabla. Yo personalmente prefiero usar != porque claramente lo leí como "no igual", pero si ingresas [field1 != field2] y guardarlo como un límite, la próxima vez que lo consulte, se mostrará como [field1 <> field2]. Esto me dice que la forma correcta de hacerlo es <>.


14
2017-10-12 11:45



!=, a pesar de no ser ANSI, tiene más el verdadero espíritu de SQL como lenguaje legible. Grita no es igual. <> dice que es para mí (menos que, mayor que) lo cual es simplemente extraño. Sé que la intención es que es ya sea menor o mayor que, por tanto, no es igual, pero eso es una manera muy complicada de decir algo muy simple.

Yo sólo he tenido que tomar algunas consultas SQL largas y colocarlos cuidadosamente en un archivo XML para un montón de razones estúpidas no voy a entrar.

Basta decir que XML no está abajo <> en absoluto y tuve que cambiarlos a != y controlarme a mí mismo antes de que me destruyera.


12
2018-04-06 21:01



Puedes usar lo que quieras en T-SQL. La documentación dice que ambos funcionan de la misma manera. yo prefiero !=, porque dice "no igual" a mi mente (basada en C / C ++ / C #), pero los gurús de bases de datos parecen preferir <>.


9
2018-04-06 21:35



Entiendo que la sintaxis C != está en SQL Server debido a su herencia de Unix (de vuelta en los días de Sybase SQL Server, antes de Microsoft SQL Server 6.5).


7
2017-11-24 05:59



Una alternativa sería usar el operador NULLIF que no sea <> o != que devuelve NULL si los dos argumentos son iguales NULLIF en Microsoft Docs. Así que creo que la cláusula WHERE se puede modificar para <> y != como sigue:

NULLIF(arg1, arg2) IS NOT NULL

Como encontré eso, usando <> y != no funciona para la fecha en algunos casos. Por lo tanto, usar la expresión anterior hace lo necesario.


3
2018-06-10 17:57