Czy jest jakaś różnica między „! =” I „<>” w Oracle Sql?


Odpowiedzi:


110

Nie, nie ma żadnej różnicy w funkcjonalności.
(To samo dotyczy wszystkich innych DBMS - większość z nich obsługuje oba style):

Oto aktualne odniesienie do SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Standard SQL definiuje tylko jeden operator dla „ nie równa się ” i to jest<>


14
! = łatwiej przechowywać w pliku XML!
Mark McLaren

Czy IS NOTodpowiednik / synonomiczny / .. to <>i !=? Czy wszystkie trzy mogą być używane w ten sam sposób?
orzechowy o przystojnym

50

W rzeczywistości istnieją cztery formy tego operatora:

<>
!=
^=

i nawet

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

które są takie same, ale traktowane inaczej, gdy wymagane jest dopasowanie dosłowne (zapisane kontury lub zapytania w pamięci podręcznej).


2
A odmiany takie jak NOT(x = y), może !(x = y)itp.?
MatBailie

1
Ciekawy! Nie wiedziałem o tym ^=(sam to widziałem za pierwszym razem, kiedy zamieściłem link do instrukcji). Ale twoja uwaga dotycząca zapytań w pamięci podręcznej jest dobra.
a_horse_with_no_name

1
@Dems: in Oracle, boolean nie jest typem pierwszej klasy w SQL(który różni się od PL/SQL). I. e. nie możesz SELECT 1 = 1 FROM duallubić w innych systemach. Więc booleans mieć swój własny zestaw operatorów ważny tylko w kontekstach logicznych ( WHERElub HAVINGlub podobnych klauzul). NOTjest jedynym logicznym operatorem negacji w Oracle SQL(AFAIK).
Quassnoi

3
¬= -- worked on some obscure platforms in the dark ages- tak, nazywano je „komputerami mainframe IBM”. Od czasów, gdy mężczyźni byli mężczyznami, kobiety były kobietami, dinozaury wędrowały po ziemi, a komputery były chłodzone wodą. :-)
Bob Jarvis - Przywróć Monikę

1

Na uniwersytecie uczono nas, że „najlepszą praktyką” jest używanie! = Podczas pracy dla pracodawców, chociaż wszyscy powyżsi operatorzy mają tę samą funkcjonalność.


14
Standard SQL (tylko) definiuje się <>jako operator „nie równa się”. Więc rozważę użycie tego jako „najlepszej praktyki”
a_horse_with_no_name

2
Ciekawy. Być może będę musiał sprawdzić, czy wszystko, czego mnie nauczono, jest w standardzie SQL, czy nie. Dzięki za wskazanie tego.

11
Prawdopodobnie ujawni się moje dziedzictwo C, ale nie mogę znieść <>i wolę !=. Głównie dlatego, <>że mówiąc „mniejszy lub większy niż” wydaje mi się zakładać, że typ danych ma niejawną kolejność (co niekoniecznie jest prawdą, chociaż jest prawdziwe dla wszystkich typów danych SQL), podczas gdy !=stwierdzenie „nie równe” w bardzo czystym sensie.
Jeffrey Kemp

1
Standardy kodowania są często zależne od pracodawcy. Jeśli Twój pracodawca nie ma standardu kodowania, dobrym pomysłem jest wybranie przez zespół standardu publicznego.
Denise Skidmore

-3

Zgodnie z tym artykułem! = Działa szybciej

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


18
Chociaż popularna, ta witryna niestety nie jest wiarygodnym źródłem wielu tematów. Ta kwestia była omawiana wcześniej tutaj . Pomimo nagrody, nikt nie był w stanie stworzyć przypadku testowego wykazującego zauważalną różnicę w wydajności. Ale moja oferta jest nadal aktualna - dam ci nagrodę w wysokości 500 punktów, jeśli możesz stworzyć przypadek testowy pokazujący, że! = Jest szybszy niż inne operatory nierówne.
Jon Heller
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.