Я хотел бы знать, есть ли различия между этими двумя 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
). I. e. вам не может SELECT 1 = 1 FROM dual
понравиться в некоторых других системах. Так булевы имеют свой собственный набор операторов действующих только в логических контекстах ( WHERE
или HAVING
или аналогичных положений). NOT
- единственный логический оператор отрицания в Oracle SQL
(AFAIK).
¬= -- worked on some obscure platforms in the dark ages
- Да, они назывались «мэйнфреймы IBM». С тех времен, когда мужчины были мужчинами, женщины были женщинами, динозавры бродили по земле, а компьютеры охлаждались водой. :-)
В университете нас учили, что «лучшая практика» - использовать! = При работе на работодателей, хотя все перечисленные выше операторы имеют одинаковые функции.
<>
оператор «не равно». Так что я бы рассмотрел это как «лучшую практику»
<>
и предпочитаю !=
. В основном потому, что <>
в его высказывании «меньше или больше чем», на мой взгляд, предполагается, что тип данных имеет неявный порядок (что не обязательно верно, хотя это верно для всех типов данных SQL), тогда !=
как говорится «не равно» в очень чистом смысле.
Согласно этой статье! = Работает быстрее