Есть ли разница между «! =» И «<>» в Oracle Sql?

77

Я хотел бы знать, существуют ли какие-либо различия между двумя операторами not equal <> и != в Oracle.

Существуют ли случаи, когда они могут давать разные результаты или различную производительность?

Теги:

4 ответа

71
Лучший ответ

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

Вот текущая ссылка SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

Стандарт SQL определяет только один оператор для "не равно", а это <>

  • 10
    ! = легче хранить в файле XML!
32

На самом деле существуют формы четыре этого оператора:

<>
!=
^=

и даже

¬= -- worked on some obscure platforms in the dark ages

которые являются одинаковыми, но обрабатываются по-разному, когда требуется дословное совпадение (сохраненные контуры или кешированные запросы).

  • 2
    И такие варианты, как NOT(x = y) , может быть !(x = y) и т. Д.?
  • 1
    Интересно! Я не знал о ^= (сам впервые увидел, когда выложил ссылку на руководство). Но ваша точка зрения о кешированных запросах хорошая.
Показать ещё 3 комментария
1

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

  • 14
    Стандарт SQL (только) определяет <> как оператор "не равно". Поэтому я хотел бы использовать это как «лучшую практику»
  • 2
    Интересно. Возможно, придется проверить все остальное, чему меня учили, стандарта SQL или нет. Спасибо за указание на это.
Показать ещё 2 комментария
-2

В соответствии с этой статьей!= выполняется быстрее

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

  • 15
    Несмотря на популярность, этот сайт, к сожалению, не является надежным источником по многим темам. Этот вопрос обсуждался ранее здесь . Несмотря на щедрость, никто не смог создать тестовый пример, демонстрирующий заметную разницу в производительности. Но мое предложение остается в силе - я дам вам вознаграждение в 500 баллов, если вы сможете создать тестовый пример, показывающий, что! = Быстрее, чем другие операторы, не имеющие равных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню