C'è qualche differenza tra "! =" E "<>" in Oracle Sql?


Risposte:


110

No, non c'è alcuna differenza nella funzionalità.
(Lo stesso vale per tutti gli altri DBMS, la maggior parte supporta entrambi gli stili):

Ecco l'attuale riferimento SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Lo standard SQL definisce solo un singolo operatore per " non uguale " e questo è<>


14
! = è più facile da memorizzare in un file XML!
Mark McLaren

È IS NOTequivalente / synonomous / .. a <>e !=? Possono essere usati tutti e tre allo stesso modo?
nocciola circa natty

50

In realtà, ci sono quattro forme di questo operatore:

<>
!=
^=

e persino

¬= -- worked on some obscure platforms in the dark ages

che sono gli stessi, ma trattati in modo diverso quando è richiesta una corrispondenza letterale (strutture archiviate o query memorizzate nella cache).


2
E variazioni come NOT(x = y), forse !(x = y), ecc.?
MatBailie

1
Interessante! Non sapevo del ^=(l'ho visto io stesso la prima volta quando ho pubblicato il collegamento al manuale). Ma il tuo punto sulle query memorizzate nella cache è positivo.
a_horse_with_no_name

1
@Dems: in Oracle, boolean non è un tipo di prima classe in SQL(che è diverso da PL/SQL). I. e. non ti SELECT 1 = 1 FROM dualpiace in altri sistemi. Quindi i booleani hanno il proprio insieme di operatori validi solo in contesti logici ( WHEREo HAVINGclausole simili). NOTè l'unico operatore booleano di negazione in Oracle SQL(AFAIK).
Quassnoi

3
¬= -- worked on some obscure platforms in the dark ages- sì, erano chiamati "mainframe IBM". Dai tempi in cui gli uomini erano uomini, le donne erano donne, i dinosauri vagavano per la terra ei computer erano raffreddati ad acqua. :-)
Bob Jarvis - Ripristina Monica il

1

All'università ci è stato insegnato che la "migliore pratica" era quella di usare! = Quando si lavora per i datori di lavoro, sebbene tutti gli operatori sopra abbiano la stessa funzionalità.


14
Lo standard SQL (solo) definisce <>come operatore "non uguale". Quindi prenderei in considerazione di utilizzarlo come "best practice"
a_horse_with_no_name,

2
Interessante. Potrebbe essere necessario controllare che tutto il resto che mi è stato insegnato sia di standard SQL o meno. Grazie per segnalarlo.

11
Probabilmente la mia eredità C sta uscendo, ma non posso sopportare <>e preferire !=. Principalmente perché <>nel suo dire "minore o maggiore di", a me, sembra presumere che il tipo di dati abbia un ordine implicito (che non è necessariamente vero, sebbene sia vero per tutti i tipi di dati SQL), mentre !=sta dicendo "non uguale" in un senso molto puro.
Jeffrey Kemp

1
Gli standard di codifica dipendono spesso dal datore di lavoro. Se il tuo datore di lavoro non ha uno standard di codifica, è una buona idea che il team ne scelga uno pubblico.
Denise Skidmore

-3

Secondo questo articolo,! = Si comporta più velocemente

http://www.dba-oracle.com/t_not_equal_operator.htm


18
Sebbene popolare, quel sito Web purtroppo non è una fonte affidabile su molti argomenti. Questo problema è stato discusso in precedenza qui . Nonostante la taglia, nessuno è stato in grado di creare un test case che dimostrasse una notevole differenza nelle prestazioni. Ma la mia offerta è ancora valida: ti darò una taglia di 500 punti se puoi creare un caso di test che dimostri che! = È più veloce di altri operatori non uguali.
Jon Heller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.