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ść.
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.
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.
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
<>
źródło
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
które są takie same, ale traktowane inaczej, gdy wymagane jest dopasowanie dosłowne (zapisane kontury lub zapytania w pamięci podręcznej).
źródło
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 wSQL
(który różni się odPL/SQL
). I. e. nie możeszSELECT 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
lubHAVING
lub podobnych klauzul).NOT
jest jedynym logicznym operatorem negacji w OracleSQL
(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ść.
źródło
<>
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
http://www.dba-oracle.com/t_not_equal_operator.htm
źródło