2010-01-14 8 views
34

Quale dei due modi (semanticamente equivalenti) è preferibile testare la disuguaglianza?Utilizzo dell'operatore corretto, o preferibile, non uguale in MySQL

  1. 'foo' != 'bar' (punto esclamativo e segno uguale)
  2. 'foo' <> 'bar' (meno e maggiore di chevron simboli insieme)

La documentazione di MySQL indica chiaramente che non v'è alcuna differenza tra loro e ancora alcune persone sembra essere attaccato a farlo solo in un modo o nell'altro. Forse questo è solo un ennesimo dibattito vi contro emacs, ma quando altre persone leggono il tuo codice (e quindi le tue domande), è utile mantenere una certa coerenza.

<> assomiglia molto <=> che è un operatore molto sottoutilizzata ma potrebbe forse creare confusione ad un'osservazione poiché i due sono quasi di fronte (eccetto le ovvie NULL casi).

+0

"alcune persone sembrano essere attaccate a farlo solo in un modo o nell'altro" - La coerenza è una buona cosa. –

+0

Personalmente preferisco! = Su <> ma non riesco a pensare veramente a una ragione oggettiva, "reale". – ChristopheD

+7

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

risposta

50

<> dovrebbe essere preferito, a parità di condizioni, in quanto si accorda con lo standard SQL ed è tecnicamente più portabile ...

! = È non standard, ma la maggior parte db lo implementa.

sql: grammatica 2008:

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

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

+0

Un esempio di un DB che non funziona t support '! =' è Microsoft Access. – DavidDraughn

+2

Anche se la tua risposta ovviamente non è sbagliata, per MySQL ho l'impressione che '! =' Sia più ampiamente usato. Ciò è probabilmente dovuto alla stretta relazione con PHP e, come ha detto JonH, "programmatore" preferisce "! =". In altre parole, più sviluppatori probabilmente capiscono '! =' Di '<>'. Il mio punto è che se si vuole aderire agli standard, allora è preferibile "<>", ma per la leggibilità, '! =' Potrebbe essere l'opzione migliore. Solo un pensiero. – twiz

2

I DBA sono generalmente simili a < e programmatori come! =. Solo un'osservazione :-)

+3

Mi piacerebbe pensare che anche i DBA potrebbero essere programmatori? X-) –

2

Essi sono gli stessi, è puramente preferenza.

Questo dovrebbe darvi una buona idea

Operators

! = (Non uguale a) Non uguale a (non SQL-92 standard)

<> (diverso da) Non uguale a

4

<> è l'unico nello standard SQL-92.

0

L'operatore <> è quello che è nello standard SQL, quindi la maggior parte delle persone che conoscono SQL sarà abituato ad esso, o almeno a conoscenza di esso. Io stesso non ero nemmeno a conoscenza del fatto che l'operatore != fosse disponibile anche in alcuni dialetti SQL fino a poco tempo fa.

Come hai notato, le persone tendono a utilizzare solo l'una o l'altra, e questo è un buon approccio, almeno su una base progetto per progetto. Qualunque sia la scelta da utilizzare, sii coerente.

17

È ovvio.

Il! il personaggio si trova nell'angolo nord-occidentale delle tastiere americane.

Il quartier generale di Microsoft si trova nell'angolo nord occidentale degli Stati Uniti.

Così. <> è un cenno a Microsoft.

!= è un rifiuto di Microsoft.

È un codice politico segreto.

+18

Quindi, se annulliamo il confronto tra non uguali, stiamo supportando Microsoft? O stiamo rifiutando la nostra stessa disapprovazione? :) –

Problemi correlati