Мені хотілося б знати, чи є різниці між двома 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), тоді !=
як говорить "не рівне" в дуже чистому сенсі.
Згідно з цією статтею!! = Працює швидше