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

123

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

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

Mesop
источник
5
возможный дубликат Oracle Not Equals Operator
месоп
1
Возможный дубликат Oracle Not Equals Operator

Ответы:

110

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

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

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

a_horse_with_no_name
источник
14
! = проще хранить в файле XML!
Mark McLaren
Является IS NOTэквивалентом / синонимом / .. к <>и !=? Можно ли использовать все три одинаково?
Безумный о Натти
50

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

<>
!=
^=

и даже

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

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

Quassnoi
источник
2
И варианты вроде NOT(x = y), может быть !(x = y), и т. Д.?
MatBailie
1
Интересный! Я не знал про the ^=(сам впервые выложил ссылку на мануал). Но ваша точка зрения о кешированных запросах верна.
a_horse_with_no_name
1
@Dems: in Oracle, boolean не является первоклассным типом в SQL(который отличается от PL/SQL). I. e. вам не может SELECT 1 = 1 FROM dualпонравиться в некоторых других системах. Так булевы имеют свой собственный набор операторов действующих только в логических контекстах ( WHEREили HAVINGили аналогичных положений). NOT- единственный логический оператор отрицания в Oracle SQL(AFAIK).
Quassnoi
3
¬= -- worked on some obscure platforms in the dark ages- Да, они назывались «мэйнфреймы IBM». С тех времен, когда мужчины были мужчинами, женщины были женщинами, динозавры бродили по земле, а компьютеры охлаждались водой. :-)
Боб Джарвис - Reinstate Monica
1

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


источник
14
Стандарт SQL (только) определяет <>оператор «не равно». Так что я бы рассмотрел это как «лучшую практику»
a_horse_with_no_name
2
Интересный. Возможно, придется проверить все остальное, чему меня учили, соответствует стандарту SQL или нет. Спасибо, что указали на это.
11
Вероятно, выходит мое наследие C, но я терпеть не могу <>и предпочитаю !=. В основном потому, что <>в его высказывании «меньше или больше чем», на мой взгляд, предполагается, что тип данных имеет неявный порядок (что не обязательно верно, хотя это верно для всех типов данных SQL), тогда !=как говорится «не равно» в очень чистом смысле.
Джеффри Кемп
1
Стандарты кодирования часто зависят от работодателя. Если у вашего работодателя нет стандарта кодирования, команде рекомендуется выбрать общедоступный.
Дениз Скидмор
-3

Согласно этой статье! = Работает быстрее

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

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