Чи є різниця між "! =" І "<>" в Oracle Sql?


123

Мені хотілося б знати, чи є різниці між двома not equalоператорами <>та !=Oracle.

Чи бувають випадки, коли вони можуть давати різні результати або різну продуктивність?


5
можливий дублікат оператора Oracle Not
Equals

Відповіді:


110

Ніякої різниці у функціональності немає.
(Те саме стосується всіх інших СУБД - більшість з них підтримує обидва стилі):

Ось поточна посилання на SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Стандарт SQL визначає лише одного оператора для " не дорівнює ", і це<>


14
! = простіше зберігати у XML-файлі!
Марк Макларен

Є IS NOTрівнозначним / синономічним / .. до <>та !=? Чи можна всіх трьох використовувати однаково?
горіх про natty

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, boolean не є першокласним типом SQL(що відрізняється від PL/SQL). І. е. вам не SELECT 1 = 1 FROM dualподобається в деяких інших системах. Так булеві мають свій власний набір операторів діючих тільки в логічних контекстах ( WHEREабо HAVINGчи аналогічних положень). NOTє єдиним булевим оператором заперечення в Oracle SQL(AFAIK).
Quassnoi

3
¬= -- worked on some obscure platforms in the dark ages- так, їх називали "мейнфрейми IBM". З часів, коли чоловіки були чоловіками, жінки - жінки, динозаври блукали по землі, а комп'ютери - з водяним охолодженням. :-)
Боб Джарвіс - Відновіть Моніку

1

В університеті нас вчили "найкращою практикою" було користуватися! = Під час роботи для роботодавців, хоча всі оператори вище мають однаковий функціонал.


14
Стандарт SQL (тільки) визначає <>як оператор "не дорівнює". Тож я б розглядав можливість використовувати це як "найкращу практику"
a_horse_with_no_name

2
Цікаво. Можливо, слід перевірити, чи все, що я вчив, є стандартом SQL чи ні. Дякуємо, що вказали на це.

11
Можливо, моя С спадщина виходить, але я не витримую <>і віддаю перевагу !=. Головним чином, тому, що <>в мовленні "менший чи більший, ніж", мені здається, що тип даних має неявне впорядкування (що не обов'язково відповідає дійсності, хоча це справедливо для всіх типів даних SQL), тоді !=як говорить "не рівне" в дуже чистому сенсі.
Джефрі Кемп

1
Стандарти кодування часто залежать від роботодавця. Якщо у вашого роботодавця немає стандарту кодування, команда найкраще вибрати загальнодоступний.
Деніз Скідмор

-3

Згідно з цією статтею!! = Працює швидше

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


18
На жаль, цей веб-сайт, на жаль, не є надійним джерелом для багатьох тем. Це питання обговорювалося раніше тут . Незважаючи на винагороду, ніхто не зміг створити тестовий випадок, що демонстрував би помітну різницю у роботі. Але моя пропозиція все ще стоїть - я дам вам суму в 500 балів, якщо ви зможете створити тестовий випадок, який показує, що! = Швидше, ніж інші нерівні оператори.
Джон Хеллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.