ฉันต้องการทราบว่ามีความแตกต่างระหว่างตัว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 ทั้งหมด) ในขณะที่!=
พูดว่า "ไม่เท่ากัน" ในแง่ที่บริสุทธิ์มาก
ตามบทความนี้! = ทำงานได้เร็วขึ้น