Tôi muốn biết nếu có bất kỳ sự khác biệt nào giữa hai not equal
toán tử <>
và !=
trong Oracle.
Có trường hợp nào chúng có thể cho kết quả khác nhau hoặc hiệu suất khác nhau không?
Tôi muốn biết nếu có bất kỳ sự khác biệt nào giữa hai not equal
toán tử <>
và !=
trong Oracle.
Có trường hợp nào chúng có thể cho kết quả khác nhau hoặc hiệu suất khác nhau không?
Câu trả lời:
Không có sự khác biệt nào về chức năng.
(Điều này cũng đúng với tất cả các DBMS khác - hầu hết chúng hỗ trợ cả hai kiểu):
Đây là tham chiếu SQL hiện tại: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC
Tiêu chuẩn SQL chỉ định nghĩa một toán tử duy nhất cho " không bằng " và đó là<>
IS NOT
tương đương / synonomous / .. đến <>
và !=
? Cả ba có thể được sử dụng theo cùng một cách?
Trên thực tế, có bốn dạng toán tử này:
<>
!=
^=
và ngay cả
¬= -- worked on some obscure platforms in the dark ages
giống nhau, nhưng được xử lý khác nhau khi yêu cầu đối sánh nguyên văn (dàn bài được lưu trữ hoặc truy vấn được lưu trong bộ nhớ cache).
NOT(x = y)
, có thể !(x = y)
, v.v.?
^=
(tự mình nhìn thấy nó lần đầu tiên khi tôi đăng liên kết đến sách hướng dẫn). Nhưng quan điểm của bạn về các truy vấn được lưu trong bộ nhớ cache là một quan điểm tốt.
Oracle
, boolean không phải là kiểu hạng nhất trong SQL
(khác với PL/SQL
). I E. bạn không thể SELECT 1 = 1 FROM dual
thích trong một số hệ thống khác. Vì vậy, các phép toán luận đã thiết lập riêng của họ về các nhà khai thác chỉ có giá trị trong bối cảnh hợp lý ( WHERE
hoặc HAVING
hoặc các điều khoản tương tự). NOT
là toán tử phủ định boolean duy nhất trong Oracle's SQL
(AFAIK).
¬= -- worked on some obscure platforms in the dark ages
- vâng, chúng được gọi là "máy tính lớn của IBM". Từ những ngày đàn ông là đàn ông, đàn bà là phụ nữ, khủng long đi lang thang trên trái đất và máy tính làm mát bằng nước. :-)
Ở trường đại học, chúng tôi được dạy 'phương pháp hay nhất' là sử dụng! = Khi làm việc cho các nhà tuyển dụng, mặc dù tất cả các toán tử ở trên đều có chức năng giống nhau.
<>
là toán tử "không bằng". Vì vậy, tôi sẽ coi việc sử dụng đó là "phương pháp hay nhất"
<>
và thích hơn !=
. Chủ yếu là vì <>
trong câu nói của nó "nhỏ hơn hoặc lớn hơn", đối với tôi, dường như giả sử kiểu dữ liệu có một thứ tự ngầm định (điều này không nhất thiết đúng, mặc dù nó đúng với tất cả các kiểu dữ liệu SQL), trong khi !=
nói "không bằng" theo một nghĩa rất thuần túy.
Theo bài báo này,! = Hoạt động nhanh hơn