ฉันต้องการทราบว่ามีความแตกต่างระหว่างตัวnot equalดำเนินการทั้งสอง<>และ!=ใน Oracle หรือไม่
มีบางกรณีที่สามารถให้ผลลัพธ์ที่แตกต่างกันหรือประสิทธิภาพที่แตกต่างกันได้หรือไม่?
ฉันต้องการทราบว่ามีความแตกต่างระหว่างตัวnot equalดำเนินการทั้งสอง<>และ!=ใน Oracle หรือไม่
มีบางกรณีที่สามารถให้ผลลัพธ์ที่แตกต่างกันหรือประสิทธิภาพที่แตกต่างกันได้หรือไม่?
คำตอบ:
ไม่มีความแตกต่างในการทำงานเลย
(เช่นเดียวกับ DBMS อื่น ๆ - ส่วนใหญ่รองรับทั้งสองสไตล์):
นี่คือข้อมูลอ้างอิง SQL ปัจจุบัน: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC
มาตรฐาน SQL กำหนดเพียงตัวดำเนินการเดียวสำหรับ " not equals " และนั่นคือ<>
IS NOTเทียบเท่า / synonomous / .. ไป<>และ!=? ทั้งสามใช้แบบเดียวกันได้หรือไม่?
จริงๆแล้วตัวดำเนินการนี้มีสี่รูปแบบ:
<>
!=
^=
และแม้กระทั่ง
¬= -- worked on some obscure platforms in the dark ages
ซึ่งเหมือนกัน แต่ได้รับการปฏิบัติที่แตกต่างกันเมื่อจำเป็นต้องมีการจับคู่คำต่อคำ (โครงร่างที่เก็บไว้หรือการสืบค้นที่แคชไว้)
NOT(x = y)อาจจะ!(x = y)เป็นต้น?
^=(เห็นด้วยตัวเองครั้งแรกเมื่อฉันโพสต์ลิงก์ไปยังคู่มือ) แต่ประเด็นของคุณเกี่ยวกับข้อความค้นหาที่แคชไว้เป็นสิ่งที่ดี
Oracleบูลีนไม่ใช่ประเภทชั้นหนึ่งในSQL(ซึ่งแตกต่างจากPL/SQL) I. จ. คุณไม่SELECT 1 = 1 FROM dualชอบในระบบอื่น ๆ ดังนั้นบูลีนจึงมีชุดของตัวดำเนินการที่ใช้ได้เฉพาะในบริบทเชิงตรรกะ ( WHEREหรือส่วนHAVINGคำสั่งที่คล้ายกัน) NOTเป็นตัวดำเนินการปฏิเสธบูลีนเพียงตัวเดียวใน Oracle's SQL(AFAIK)
¬= -- worked on some obscure platforms in the dark ages- ใช่เรียกว่า "เมนเฟรมของ IBM" ตั้งแต่สมัยที่ผู้ชายเป็นผู้ชายผู้หญิงเป็นผู้หญิงไดโนเสาร์ท่องไปในโลกและคอมพิวเตอร์ระบายความร้อนด้วยน้ำ :-)
ที่มหาวิทยาลัยเราได้รับการสอนว่า 'แนวทางปฏิบัติที่ดีที่สุด' คือการใช้! = เมื่อทำงานให้กับนายจ้างแม้ว่าผู้ปฏิบัติงานทั้งหมดข้างต้นจะมีฟังก์ชันการทำงานเหมือนกัน
<>เป็นตัวดำเนินการ "not equals" ดังนั้นฉันจะพิจารณาใช้เป็น "แนวทางปฏิบัติที่ดีที่สุด"
<>และชอบ!=ได้ สาเหตุหลักมา<>จากการพูดว่า "น้อยกว่าหรือมากกว่า" สำหรับฉันดูเหมือนว่าประเภทข้อมูลมีลำดับโดยปริยาย (ซึ่งไม่จำเป็นต้องเป็นจริงแม้ว่าจะเป็นจริงสำหรับประเภทข้อมูล SQL ทั้งหมด) ในขณะที่!=พูดว่า "ไม่เท่ากัน" ในแง่ที่บริสุทธิ์มาก
ตามบทความนี้! = ทำงานได้เร็วขึ้น