มีความแตกต่างระหว่าง“! =” และ“ <>” ใน Oracle Sql หรือไม่


123

ฉันต้องการทราบว่ามีความแตกต่างระหว่างตัวnot equalดำเนินการทั้งสอง<>และ!=ใน Oracle หรือไม่

มีบางกรณีที่สามารถให้ผลลัพธ์ที่แตกต่างกันหรือประสิทธิภาพที่แตกต่างกันได้หรือไม่?


5
อาจทำซ้ำได้ของOracle Not Equals Operator
Mesop

1
อาจซ้ำกันของOracle Not Equals Operator

คำตอบ:


110

ไม่มีความแตกต่างในการทำงานเลย
(เช่นเดียวกับ DBMS อื่น ๆ - ส่วนใหญ่รองรับทั้งสองสไตล์):

นี่คือข้อมูลอ้างอิง SQL ปัจจุบัน: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

มาตรฐาน SQL กำหนดเพียงตัวดำเนินการเดียวสำหรับ " not equals " และนั่นคือ<>


14
! = จัดเก็บในไฟล์ XML ได้ง่ายกว่า!
Mark McLaren

คือIS NOTเทียบเท่า / synonomous / .. ไป<>และ!=? ทั้งสามใช้แบบเดียวกันได้หรือไม่?
บ๊องเกี่ยวกับนัตตี้

50

จริงๆแล้วตัวดำเนินการนี้มีสี่รูปแบบ:

<>
!=
^=

และแม้กระทั่ง

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

ซึ่งเหมือนกัน แต่ได้รับการปฏิบัติที่แตกต่างกันเมื่อจำเป็นต้องมีการจับคู่คำต่อคำ (โครงร่างที่เก็บไว้หรือการสืบค้นที่แคชไว้)


2
และรูปแบบต่างๆเช่นNOT(x = y)อาจจะ!(x = y)เป็นต้น?
MatBailie

1
! ที่น่าสนใจ ฉันไม่ทราบเกี่ยวกับ^=(เห็นด้วยตัวเองครั้งแรกเมื่อฉันโพสต์ลิงก์ไปยังคู่มือ) แต่ประเด็นของคุณเกี่ยวกับข้อความค้นหาที่แคชไว้เป็นสิ่งที่ดี
a_horse_with_no_name

1
@Dems: ในOracleบูลีนไม่ใช่ประเภทชั้นหนึ่งในSQL(ซึ่งแตกต่างจากPL/SQL) I. จ. คุณไม่SELECT 1 = 1 FROM dualชอบในระบบอื่น ๆ ดังนั้นบูลีนจึงมีชุดของตัวดำเนินการที่ใช้ได้เฉพาะในบริบทเชิงตรรกะ ( WHEREหรือส่วนHAVINGคำสั่งที่คล้ายกัน) NOTเป็นตัวดำเนินการปฏิเสธบูลีนเพียงตัวเดียวใน Oracle's SQL(AFAIK)
Quassnoi

3
¬= -- worked on some obscure platforms in the dark ages- ใช่เรียกว่า "เมนเฟรมของ IBM" ตั้งแต่สมัยที่ผู้ชายเป็นผู้ชายผู้หญิงเป็นผู้หญิงไดโนเสาร์ท่องไปในโลกและคอมพิวเตอร์ระบายความร้อนด้วยน้ำ :-)
Bob Jarvis - คืนสถานะ Monica

1

ที่มหาวิทยาลัยเราได้รับการสอนว่า 'แนวทางปฏิบัติที่ดีที่สุด' คือการใช้! = เมื่อทำงานให้กับนายจ้างแม้ว่าผู้ปฏิบัติงานทั้งหมดข้างต้นจะมีฟังก์ชันการทำงานเหมือนกัน


14
มาตรฐาน SQL (เท่านั้น) กำหนด<>เป็นตัวดำเนินการ "not equals" ดังนั้นฉันจะพิจารณาใช้เป็น "แนวทางปฏิบัติที่ดีที่สุด"
a_horse_with_no_name

2
น่าสนใจ อาจต้องตรวจสอบทุกอย่างที่ฉันได้รับการสอนว่าเป็นมาตรฐาน SQL หรือไม่ ขอบคุณที่ชี้ให้เห็น

11
อาจเป็นมรดก C ของฉันที่กำลังจะออกมา แต่ฉันไม่สามารถยืน<>และชอบ!=ได้ สาเหตุหลักมา<>จากการพูดว่า "น้อยกว่าหรือมากกว่า" สำหรับฉันดูเหมือนว่าประเภทข้อมูลมีลำดับโดยปริยาย (ซึ่งไม่จำเป็นต้องเป็นจริงแม้ว่าจะเป็นจริงสำหรับประเภทข้อมูล SQL ทั้งหมด) ในขณะที่!=พูดว่า "ไม่เท่ากัน" ในแง่ที่บริสุทธิ์มาก
Jeffrey Kemp

1
มาตรฐานการเข้ารหัสมักขึ้นอยู่กับนายจ้าง หากนายจ้างของคุณไม่มีมาตรฐานการเขียนโค้ดทีมควรเลือกแบบสาธารณะ
Denise Skidmore

-3

ตามบทความนี้! = ทำงานได้เร็วขึ้น

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


18
แม้ว่าจะได้รับความนิยม แต่เว็บไซต์นั้นไม่ได้เป็นแหล่งที่เชื่อถือได้ในหลายหัวข้อ ปัญหานี้ถูกกล่าวถึงก่อนหน้านี้ที่นี่ แม้จะมีค่าหัว แต่ก็ไม่มีใครสามารถสร้างกรณีทดสอบที่แสดงให้เห็นถึงความแตกต่างอย่างเห็นได้ชัดในประสิทธิภาพ แต่ข้อเสนอของฉันยังคงมีอยู่ - ฉันจะให้เงินรางวัล 500 คะแนนหากคุณสามารถสร้างกรณีทดสอบที่แสดงว่า! = เร็วกว่าตัวดำเนินการอื่นที่ไม่เท่ากับ
Jon Heller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.