И варианты вроде 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
В университете нас учили, что «лучшая практика» - использовать! = При работе на работодателей, хотя все перечисленные выше операторы имеют одинаковые функции.
Стандарт SQL (только) определяет <>оператор «не равно». Так что я бы рассмотрел это как «лучшую практику»
a_horse_with_no_name
2
Интересный. Возможно, придется проверить все остальное, чему меня учили, соответствует стандарту SQL или нет. Спасибо, что указали на это.
11
Вероятно, выходит мое наследие C, но я терпеть не могу <>и предпочитаю !=. В основном потому, что <>в его высказывании «меньше или больше чем», на мой взгляд, предполагается, что тип данных имеет неявный порядок (что не обязательно верно, хотя это верно для всех типов данных SQL), тогда !=как говорится «не равно» в очень чистом смысле.
Джеффри Кемп
1
Стандарты кодирования часто зависят от работодателя. Если у вашего работодателя нет стандарта кодирования, команде рекомендуется выбрать общедоступный.
Несмотря на свою популярность, этот сайт, к сожалению, не является надежным источником по многим темам. Этот вопрос обсуждался здесь ранее . Несмотря на награду, никто не смог создать тестовый пример, демонстрирующий заметную разницу в производительности. Но мое предложение все еще в силе - я дам вам 500 баллов, если вы сможете создать тестовый пример, показывающий, что! = Быстрее, чем другие операторы не равенства.
Ответы:
Нет вообще никакой разницы в функциональности.
(То же самое и со всеми другими СУБД - большинство из них поддерживают оба стиля):
Вот текущая ссылка на SQL: https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC
Стандарт SQL определяет только один оператор для « не равно », и это
<>
источник
IS NOT
эквивалентом / синонимом / .. к<>
и!=
? Можно ли использовать все три одинаково?На самом деле существует четыре формы этого оператора:
и даже
которые одинаковы, но обрабатываются по-разному, когда требуется дословное соответствие (сохраненные схемы или кешированные запросы).
источник
NOT(x = y)
, может быть!(x = y)
, и т. Д.?^=
(сам впервые выложил ссылку на мануал). Но ваша точка зрения о кешированных запросах верна.Oracle
, boolean не является первоклассным типом вSQL
(который отличается отPL/SQL
). I. e. вам не можетSELECT 1 = 1 FROM dual
понравиться в некоторых других системах. Так булевы имеют свой собственный набор операторов действующих только в логических контекстах (WHERE
илиHAVING
или аналогичных положений).NOT
- единственный логический оператор отрицания в OracleSQL
(AFAIK).¬= -- worked on some obscure platforms in the dark ages
- Да, они назывались «мэйнфреймы IBM». С тех времен, когда мужчины были мужчинами, женщины были женщинами, динозавры бродили по земле, а компьютеры охлаждались водой. :-)В университете нас учили, что «лучшая практика» - использовать! = При работе на работодателей, хотя все перечисленные выше операторы имеют одинаковые функции.
источник
<>
оператор «не равно». Так что я бы рассмотрел это как «лучшую практику»<>
и предпочитаю!=
. В основном потому, что<>
в его высказывании «меньше или больше чем», на мой взгляд, предполагается, что тип данных имеет неявный порядок (что не обязательно верно, хотя это верно для всех типов данных SQL), тогда!=
как говорится «не равно» в очень чистом смысле.Согласно этой статье! = Работает быстрее
http://www.dba-oracle.com/t_not_equal_operator.htm
источник