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.
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.
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.
Jawaban:
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
<>
sumber
IS NOT
setara / sinonom / .. dengan<>
dan!=
? Bisakah ketiganya digunakan dengan cara yang sama?Sebenarnya ada empat bentuk operator ini:
dan bahkan
yang sama, tetapi diperlakukan berbeda ketika pencocokan kata demi kata diperlukan (kerangka tersimpan atau kueri yang disimpan dalam cache).
sumber
NOT(x = y)
, mungkin!(x = y)
, dll?^=
(melihat sendiri pertama kali ketika saya memposting link ke manual). Tapi pendapat Anda tentang kueri yang disimpan dalam cache bagus.Oracle
, boolean bukan tipe kelas satuSQL
(yang berbeda dariPL/SQL
). I. e. Anda tidak dapatSELECT 1 = 1 FROM dual
menyukai di beberapa sistem lain. Jadi boolean memiliki kumpulan operatornya sendiri yang hanya valid dalam konteks logis (WHERE
atauHAVING
klausa serupa).NOT
adalah satu-satunya operator negasi boolean di OracleSQL
(AFAIK).¬= -- 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. :-)Di universitas kami diajari 'praktik terbaik' adalah menggunakan! = Saat bekerja untuk pemberi kerja, meskipun semua operator di atas memiliki fungsi yang sama.
sumber
<>
sebagai operator "tidak sama dengan". Jadi saya akan mempertimbangkan untuk menggunakannya sebagai "praktik terbaik"<>
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.Menurut artikel ini,! = Bekerja lebih cepat
http://www.dba-oracle.com/t_not_equal_operator.htm
sumber