Chciałbym wiedzieć, czy są jakieś różnice między tymi dwoma not equal
operatorami <>
iw !=
Oracle.
Czy są przypadki, w których mogą dać inne wyniki lub inną wydajność?
Chciałbym wiedzieć, czy są jakieś różnice między tymi dwoma not equal
operatorami <>
iw !=
Oracle.
Czy są przypadki, w których mogą dać inne wyniki lub inną wydajność?
Odpowiedzi:
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<>
IS NOT
odpowiednik / synonomiczny / .. to <>
i !=
? Czy wszystkie trzy mogą być używane w ten sam sposób?
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).
NOT(x = y)
, może !(x = y)
itp.?
^=
(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.
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 dual
lubić w innych systemach. Więc booleans mieć swój własny zestaw operatorów ważny tylko w kontekstach logicznych ( WHERE
lub HAVING
lub podobnych klauzul). NOT
jest jedynym logicznym operatorem negacji w Oracle SQL
(AFAIK).
¬= -- 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ą. :-)
Na uniwersytecie uczono nas, że „najlepszą praktyką” jest używanie! = Podczas pracy dla pracodawców, chociaż wszyscy powyżsi operatorzy mają tę samą funkcjonalność.
<>
jako operator „nie równa się”. Więc rozważę użycie tego jako „najlepszej praktyki”
<>
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.
Zgodnie z tym artykułem! = Działa szybciej