Oracle Sql'de “! =” Ve “<>” arasında herhangi bir fark var mı?


Yanıtlar:


110

Hayır, işlevsellikte hiçbir fark yoktur.
(Aynısı diğer tüm DBMS için de geçerlidir - çoğu her iki stili de destekler):

İşte mevcut SQL referansı: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

SQL standardı yalnızca " eşit değildir " için tek bir operatör tanımlar ve bu<>


14
! = bir XML dosyasında saklamak daha kolaydır!
Mark McLaren

IS NOTiçin / .. / dengi aynı anlama <>ve !=? Üçü de aynı şekilde kullanılabilir mi?
natty hakkında çılgınlık

50

Aslında, bu operatörün dört biçimi vardır :

<>
!=
^=

ve hatta

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

bunlar aynıdır, ancak birebir eşleşme gerektiğinde farklı şekilde ele alınır (depolanmış anahatlar veya önbelleğe alınmış sorgular).


2
Ve NOT(x = y)belki !(x = y), vb. Gibi varyasyonlar ?
MatBailie

1
İlginç! Hakkında bir bilgim yoktu ^=(kılavuzun bağlantısını ilk kez yayınladığımda kendim gördüm). Ancak, önbelleğe alınmış sorgularla ilgili görüşünüz iyi.
a_horse_with_no_name

1
@Dems: in Oracle, boolean birinci sınıf bir tür değildir SQL(bundan farklıdır PL/SQL). I. e. Eğer olamaz SELECT 1 = 1 FROM dualdiğer bazı sistemlerde gibi. Mantıksal ifadenin sadece mantıksal bağlamlarda (geçerli operatörlerin kendi belirledik Yani WHEREya HAVINGveya benzer maddeleri). NOTOracle'ın SQL(AFAIK) tek boole olumsuz operatörüdür .
Quassnoi

3
¬= -- worked on some obscure platforms in the dark ages- evet, onlara "IBM ana bilgisayarları" deniyordu. Erkeklerin erkek, kadınların kadın olduğu, dinozorların dünyayı dolaştığı ve bilgisayarlar su ile soğutulduğu günlerden beri. :-)
Bob Jarvis - Monica'yı yeniden

1

Üniversitede bize 'en iyi uygulama' öğesinin, işverenler için çalışırken! = Kullanmak olduğu öğretildi, ancak yukarıdaki tüm operatörler aynı işlevselliğe sahip.


14
SQL standardı (yalnızca) <>"eşit değildir" operatörü olarak tanımlanır. Bu yüzden bunu "en iyi uygulama" olarak kullanmayı düşünüyorum
a_horse_with_no_name

2
İlginç. Bana öğretilen her şeyin SQL standardına uygun olup olmadığını kontrol etmem gerekebilir. Gösterdiğiniz için teşekkürler.

11
Muhtemelen C mirasım ortaya çıkıyor, ama dayanamıyorum <>ve tercih edemiyorum !=. Esas olarak <>, bana göre "küçüktür veya büyüktür" ifadesinde, veri türünün örtük bir sıralamaya sahip olduğunu varsayıyor gibi göründüğü için (bu, tüm SQL veri türleri için doğru olsa da bu mutlaka doğru değildir), oysa !="eşit değil" çok saf bir anlamda.
Jeffrey Kemp

1
Kodlama standartları genellikle işverene bağlıdır. İşvereninizin bir kodlama standardı yoksa, ekibin herkese açık bir standart seçmesi iyi bir fikirdir.
Denise Skidmore

-3

Bu makaleye göre! = Daha hızlı performans gösterir

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


18
Popüler olmasına rağmen, bu web sitesi maalesef pek çok konuda güvenilir bir kaynak değil. Bu konu daha önce burada tartışılmıştı . Ödüle rağmen, hiç kimse performansta gözle görülür bir fark gösteren bir test senaryosu oluşturamadı. Ama teklifim hala geçerli - eğer! = Diğer eşit olmayan operatörlerden daha hızlı olduğunu gösteren bir test senaryosu oluşturabilirseniz size 500 puanlık bir ödül vereceğim.
Jon Heller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.