Мені хотілося б знати, чи є різниці між двома not equalоператорами <>та !=Oracle.
Чи бувають випадки, коли вони можуть давати різні результати або різну продуктивність?
Мені хотілося б знати, чи є різниці між двома not equalоператорами <>та !=Oracle.
Чи бувають випадки, коли вони можуть давати різні результати або різну продуктивність?
Відповіді:
Ніякої різниці у функціональності немає.
(Те саме стосується всіх інших СУБД - більшість з них підтримує обидва стилі):
Ось поточна посилання на SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC
Стандарт SQL визначає лише одного оператора для " не дорівнює ", і це<>
IS NOTрівнозначним / синономічним / .. до <>та !=? Чи можна всіх трьох використовувати однаково?
Насправді, існує чотири форми цього оператора:
<>
!=
^=
і навіть
¬= -- worked on some obscure platforms in the dark ages
які однакові, але трактуються по-різному, коли потрібна дослівна відповідність (збережені контури або кешовані запити).
NOT(x = y), може !(x = y), тощо?
^=(побачив це сам вперше, коли опублікував посилання на керівництво). Але ваша думка щодо кешованих запитів хороша.
Oracle, boolean не є першокласним типом SQL(що відрізняється від PL/SQL). І. е. вам не SELECT 1 = 1 FROM dualподобається в деяких інших системах. Так булеві мають свій власний набір операторів діючих тільки в логічних контекстах ( WHEREабо HAVINGчи аналогічних положень). NOTє єдиним булевим оператором заперечення в Oracle SQL(AFAIK).
¬= -- worked on some obscure platforms in the dark ages- так, їх називали "мейнфрейми IBM". З часів, коли чоловіки були чоловіками, жінки - жінки, динозаври блукали по землі, а комп'ютери - з водяним охолодженням. :-)
В університеті нас вчили "найкращою практикою" було користуватися! = Під час роботи для роботодавців, хоча всі оператори вище мають однаковий функціонал.
<>як оператор "не дорівнює". Тож я б розглядав можливість використовувати це як "найкращу практику"
<>і віддаю перевагу !=. Головним чином, тому, що <>в мовленні "менший чи більший, ніж", мені здається, що тип даних має неявне впорядкування (що не обов'язково відповідає дійсності, хоча це справедливо для всіх типів даних SQL), тоді !=як говорить "не рівне" в дуже чистому сенсі.
Згідно з цією статтею!! = Працює швидше