2010-01-14 14 views
34

¿Cuál de las dos formas (semánticamente equivalentes) es preferible para probar la desigualdad?Usando el operador correcto, o preferible, no igual en MySQL

  1. 'foo' != 'bar' (signo de exclamación y signo igual)
  2. 'foo' <> 'bar' (menor que y mayor que chevron símbolos juntos)

La documentación de MySQL indica claramente que no hay diferencia entre ellos y sin embargo, algunas personas parece estar unido a solo hacerlo de una manera u otra. Tal vez este sea solo otro debate sin sentido vi vs. emacs, pero cuando otras personas leen tu código (y por lo tanto tus consultas), es útil mantener cierta consistencia.

<> se parece mucho a <=> que es un operador muy poco utilizado, pero podría provocar confusión a primera vista, ya que los dos son casi opuestos (excepto en los casos obvio NULL).

+0

"algunas personas parecen estar apegadas a solo hacerlo de una manera u otra" - La consistencia es algo bueno. –

+0

Personalmente prefiero! = Más <> pero realmente no puedo pensar en una razón objetiva y 'real' para ello. – ChristopheD

+7

Vea http://stackoverflow.com/questions/723195/should-i-use-or-for-not-equal-in-tsql/723426#723426 –

Respuesta

50

<> se debe preferir, en igualdad de todas las cosas, ya que acuerda con el estándar SQL y es técnicamente más portátil ...

! = No es estándar, pero la mayoría db's implementarlo.

sql: gramática 2008:

<not equals operator> ::= 
    <> 
+0

De acuerdo, http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt dice ' :: = <>' –

+0

Un ejemplo de un DB que no funciona t support '! =' es Microsoft Access. – DavidDraughn

+2

Aunque obviamente tu respuesta no es incorrecta, para MySQL me da la impresión de que '! =' Es más utilizado. Esto es probablemente debido a su estrecha relación con PHP, y como dijo JonH, "programador" prefiere '! ='. En otras palabras, es probable que más desarrolladores entiendan '! =' Que '<>'. Mi punto es que si quieres cumplir con los estándares, entonces '<>' es preferible, pero para la legibilidad, '! =' Puede ser la mejor opción. Solo un pensamiento. – twiz

2

DBA generalmente gusta <> y programadores como! =. Sólo una observación :-)

+3

Me gustaría pensar que los DBA también podrían ser programadores? X-) –

2

Ellos son los mismos, es puramente preferencia.

Esto debe darle una buena idea

Operators

! = (No es igual a) No igual a (no estándar SQL-92)

<> (No es igual a) No es igual a

4

<> es el único en el estándar SQL-92.

0

El operador <> es el que está en el estándar SQL, por lo que la mayoría de las personas que conocen SQL estarán acostumbradas a él, o al menos estarán al tanto de él. Yo mismo ni siquiera estaba al tanto de que el operador != también estaba disponible en algunos dialectos SQL hasta hace poco.

Como ha notado, las personas tienden a usar solo una o la otra, y ese es un buen enfoque, al menos proyecto por proyecto. Cualquiera que elija usar, sea consistente.

17

Es obvio.

The! personaje está en la esquina noroeste de teclados de EE. UU.

La sede de Microsoft se encuentra en la esquina noroeste de los EE. UU.

So. <> es un guiño a Microsoft.

!= es un rechazo de Microsoft.

Es un código político secreto.

+18

Entonces, si negamos la comparación no igual, ¿estamos apoyando a Microsoft? ¿O estamos rechazando nuestra propia desaprobación? :) –