Apakah ada perbedaan antara "! =" Dan "<>" di Oracle Sql?

123

Saya ingin tahu apakah ada perbedaan antara kedua not equaloperator <>dan !=di Oracle.

Adakah kasus di mana mereka dapat memberikan hasil yang berbeda atau kinerja yang berbeda?

Mesop
sumber
5
kemungkinan duplikat Oracle Not Equals Operator
Mesop
1
Kemungkinan duplikat Oracle Not Equals Operator

Jawaban:

110

Tidak ada perbedaan sama sekali dalam fungsi.
(Hal yang sama berlaku untuk semua DBMS lainnya - kebanyakan mendukung kedua gaya tersebut):

Berikut adalah referensi SQL saat ini: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Standar SQL hanya mendefinisikan satu operator untuk " tidak sama dengan " dan begitulah<>

seekor kuda tanpa nama
sumber
14
! = lebih mudah disimpan dalam file XML!
Mark McLaren
Apakah IS NOTsetara / sinonom / .. dengan <>dan !=? Bisakah ketiganya digunakan dengan cara yang sama?
gila tentang rapi
50

Sebenarnya ada empat bentuk operator ini:

<>
!=
^=

dan bahkan

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

yang sama, tetapi diperlakukan berbeda ketika pencocokan kata demi kata diperlukan (kerangka tersimpan atau kueri yang disimpan dalam cache).

Quassnoi
sumber
2
Dan variasi seperti NOT(x = y), mungkin !(x = y), dll?
MatBailie
1
Menarik! Saya tidak tahu tentang ^=(melihat sendiri pertama kali ketika saya memposting link ke manual). Tapi pendapat Anda tentang kueri yang disimpan dalam cache bagus.
a_horse_with_no_name
1
@Dems: in Oracle, boolean bukan tipe kelas satu SQL(yang berbeda dari PL/SQL). I. e. Anda tidak dapat SELECT 1 = 1 FROM dualmenyukai di beberapa sistem lain. Jadi boolean memiliki kumpulan operatornya sendiri yang hanya valid dalam konteks logis ( WHEREatau HAVINGklausa serupa). NOTadalah satu-satunya operator negasi boolean di Oracle SQL(AFAIK).
Quassnoi
3
¬= -- worked on some obscure platforms in the dark ages- ya, mereka disebut "mainframe IBM". Dari zaman ketika pria menjadi pria, wanita adalah wanita, dinosaurus menjelajahi bumi, dan komputer didinginkan dengan air. :-)
Bob Jarvis - Kembalikan Monica
1

Di universitas kami diajari 'praktik terbaik' adalah menggunakan! = Saat bekerja untuk pemberi kerja, meskipun semua operator di atas memiliki fungsi yang sama.


sumber
14
Standar SQL (hanya) didefinisikan <>sebagai operator "tidak sama dengan". Jadi saya akan mempertimbangkan untuk menggunakannya sebagai "praktik terbaik"
a_horse_with_no_name
2
Menarik. Mungkin harus memeriksa semua hal lain yang saya telah diajarkan adalah dari standar SQL atau tidak. Terima kasih telah menunjukkannya.
11
Mungkin warisan C saya keluar, tapi saya tidak tahan <>dan lebih suka !=. Terutama karena <>dalam mengatakan "kurang dari atau lebih besar dari", bagi saya, tampaknya menganggap tipe data memiliki urutan implisit (yang belum tentu benar, meskipun itu benar untuk semua tipe data SQL), sedangkan !=mengatakan "tidak sama" dalam arti yang sangat murni.
Jeffrey Kemp
1
Standar pengkodean seringkali bergantung pada pemberi kerja. Jika atasan Anda tidak memiliki standar pengkodean, ada baiknya tim memilih yang publik.
Denise Skidmore
-3

Menurut artikel ini,! = Bekerja lebih cepat

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

pengguna5063308
sumber
18
Meskipun populer, sayangnya situs web tersebut bukan sumber yang dapat diandalkan untuk banyak topik. Masalah ini telah dibahas sebelumnya di sini . Terlepas dari karunia itu, tidak ada yang bisa membuat kasus uji yang menunjukkan perbedaan kinerja yang nyata. Tetapi tawaran saya masih berlaku - Saya akan memberi Anda hadiah 500 poin jika Anda dapat membuat kasus uji yang menunjukkan bahwa! = Lebih cepat daripada operator tidak setara lainnya.
Jon Heller