risposta-alla-domanda-sullo-sviluppo-web-bd.com

Dovrei usare! = O <> per non uguale in T-SQL?

Ho visto SQL che usa sia != che <> per non uguale . Qual è la sintassi preferita e perché?

Mi piace !=, perché <> mi ricorda Visual Basic.

751
Bob The Janitor

Tecnicamente funzionano allo stesso modo se si utilizza SQL Server AKA T-SQL. Se lo si utilizza nelle stored procedure, non vi è alcun motivo di prestazioni per utilizzarne uno sull'altro. Quindi si riduce alle preferenze personali. Preferisco usare <> poiché è conforme ANSI.

Puoi trovare i link ai vari standard ANSI a ...

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

505
DBAndrew

La maggior parte dei database supporta != (popolare linguaggio di programmazione) e <> (ANSI).

Database che supportano sia != che <>:

Database che supportano l'operatore standard ANSI, in esclusiva :

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>
694
Bill Karwin

'<>' deriva dallo standard SQL-92 e '!=' è un operatore proprietario T-SQL. È disponibile anche in altri database, ma dal momento che non è standard, devi prenderlo caso per caso.

Nella maggior parte dei casi, saprai a quale database ti stai connettendo, quindi questo non è davvero un problema. Nel peggiore dei casi potresti dover effettuare una ricerca e sostituirla nel tuo SQL.

103
Adam Lassek

Lo standard SQL ANSI definisce <> come l'operatore "non uguale a",

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

Non esiste un operatore != in base allo standard ANSI/SQL 92.

40
Mehrdad Afshari

<> è l'SQL valido in base allo standard SQL-92.

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

29
Justin Niessner
20
madcolor

Sembra che Microsoft preferisca <> a != come evidenziato nei loro vincoli di tabella. Personalmente preferisco usare != perché leggo chiaramente che "non è uguale", ma se inserisci [field1 != field2] e lo salvi come un constrait, la prossima volta che lo interroghi, verrà visualizzato come [field1 <> field2]. Questo mi dice che il modo corretto per farlo è <>.

15
Kyle

!=, nonostante sia non ANSI, è più nel vero spirito di SQL come linguaggio leggibile. Urla non uguale. <> dice che è per me (meno di, più grande di) che è solo strano. So che l'intenzione è che sia o minore o maggiore di così non uguale, ma è un modo davvero complicato di dire qualcosa di veramente semplice.

Ho appena dovuto prendere alcune lunghe query SQL e inserirle amorevolmente in un file XML per un sacco di stupidi motivi per cui non entrerò.

Basti dire che XML non è affatto scaduto con <> e ho dovuto cambiarli in != e controllarmi prima di essere distrutto da me stesso.

13
Fat Albert

Puoi utilizzare qualsiasi cosa ti piaccia in T-SQL. La documentazione dice che entrambi funzionano allo stesso modo. Preferisco !=, perché legge "non uguale" alla mia mente (basata su C/C++/C #), ma i guru del database sembrano preferire <>.

9
Steve Haigh

Comprendo che la sintassi C != è in SQL Server a causa della sua eredità Unix (di nuovo nei giorni Sybase SQL Server, pre Microsoft SQL Server 6.5).

7
Karl

Un'alternativa sarebbe utilizzare l'operatore NULLIF diverso da <> o != che restituisce NULL se i due argomenti sono uguali NULLIF in Microsoft Docs . Quindi credo che la clausola WHERE possa essere modificata per <> e != come segue:

NULLIF(arg1, arg2) IS NOT NULL

Come ho scoperto, l'uso di <> e != non funziona per la data in alcuni casi. Quindi utilizzando l'espressione di cui sopra fa il necessario.

5
jitendrapurohit

Ho preferito usare != invece di <> perché a volte uso la sintassi <s></s> per scrivere comandi SQL. L'utilizzo di != è più pratico per evitare errori di sintassi in questo caso.

0