Vorrei sapere se ci sono differenze tra i due not equal
operatori <>
e !=
in Oracle.
Ci sono casi in cui possono dare risultati diversi o prestazioni diverse?
Vorrei sapere se ci sono differenze tra i due not equal
operatori <>
e !=
in Oracle.
Ci sono casi in cui possono dare risultati diversi o prestazioni diverse?
Risposte:
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 è<>
IS NOT
equivalente / synonomous / .. a <>
e !=
? Possono essere usati tutti e tre allo stesso modo?
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).
NOT(x = y)
, forse !(x = y)
, ecc.?
^=
(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.
Oracle
, boolean non è un tipo di prima classe in SQL
(che è diverso da PL/SQL
). I. e. non ti SELECT 1 = 1 FROM dual
piace in altri sistemi. Quindi i booleani hanno il proprio insieme di operatori validi solo in contesti logici ( WHERE
o HAVING
clausole simili). NOT
è l'unico operatore booleano di negazione in Oracle SQL
(AFAIK).
¬= -- 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. :-)
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à.
<>
come operatore "non uguale". Quindi prenderei in considerazione di utilizzarlo come "best practice"
<>
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.
Secondo questo articolo,! = Si comporta più velocemente