Использование правильного или предпочтительного оператора не равно в MySQL

Какой из двух (семантически эквивалентных) способов предпочтительнее для проверки на неравенство?

  1. 'foo' != 'bar' (восклицательный знак и знак равенства)
  2. 'foo' <> 'bar' (меньше и больше символов шеврона вместе)

В документации MySQL ясно указано, что между ними нет никакой разницы, и все же некоторые люди, кажется, привязаны к тому или иному способу выполнения. Может быть, это просто еще один бессмысленный спор о vi и emacs, но когда другие люди читают ваш код (и, следовательно, ваши запросы), полезно поддерживать некоторую согласованность.

<> очень похож на <=>, который является очень редко используемым оператором, но, возможно, может привести к путанице с первого взгляда, поскольку они почти противоположны (за исключением очевидных случаев NULL).


person Rob Van Dam    schedule 14.01.2010    source источник
comment
некоторые люди, кажется, привязаны к тому, чтобы делать это только так или иначе - Постоянство - это хорошо.   -  person Mark Byers    schedule 14.01.2010
comment
Лично я предпочитаю != ‹›, но не могу придумать объективной, «настоящей» причины для этого.   -  person ChristopheD    schedule 14.01.2010
comment
См. stackoverflow.com/questions/723195/   -  person Bill Karwin    schedule 14.01.2010
comment
@Bill Karwin: (+1) за ваш ответ :)   -  person Peter Lang    schedule 14.01.2010
comment
Кристоф: Потому что он согласуется с вашим другим кодом.   -  person    schedule 14.01.2010
comment
@Bill Karwin: Я удивлен, что пропустил этот вопрос при поиске дубликатов.   -  person Rob Van Dam    schedule 15.01.2010
comment
Н.П., этот вопрос был не совсем обманом, потому что он спрашивал о T-SQL, а вы спрашивали о MySQL.   -  person Bill Karwin    schedule 15.01.2010


Ответы (6)


‹> следует предпочесть при прочих равных условиях, поскольку он соответствует стандарту sql и технически более переносим...

!= не является стандартным, но большинство баз данных реализуют его.

грамматика SQL:2008:

<not equals operator> ::=
  <>
person jspcal    schedule 14.01.2010
comment
Согласен, contrib.andrew.cmu.edu/~shadow/sql/ sql1992.txt говорит <not equals operator> ::= <> - person Peter Lang; 14.01.2010
comment
Одним из примеров БД, не поддерживающей '!=', является Microsoft Access. - person DavidDraughn; 25.01.2013
comment
Хотя ваш ответ, очевидно, не является неправильным, для MySQL у меня сложилось впечатление, что != используется более широко. Это, вероятно, из-за его тесной связи с PHP, и, как сказал ДжонХ, программисты предпочитают !=. Другими словами, больше разработчиков, вероятно, понимают !=, чем <>. Я хочу сказать, что если вы хотите придерживаться стандартов, то <> предпочтительнее, но для удобочитаемости != может быть лучшим вариантом. Просто мысль. - person twiz; 25.02.2013

Это очевидно.

! символ находится в северо-западном углу клавиатуры США.

Штаб-квартира Microsoft находится в северо-западной части США.

Так. <> — это дань уважения Microsoft.

!= — это отказ от Microsoft.

Это секретный политический код.

person S.Lott    schedule 14.01.2010
comment
Итак, если мы отрицаем сравнение не равно, поддерживаем ли мы Microsoft? Или мы отвергаем собственное неодобрение? :) - person Bill Karwin; 15.01.2010

‹> является единственным в стандарте SQL-92.

person Joe    schedule 14.01.2010

Администраторы баз данных обычно любят ‹>, а программисты любят !=. Просто наблюдение :-)

person JonH    schedule 14.01.2010
comment
Я хотел бы думать, что администраторы баз данных тоже могут быть программистами? ИКС-) - person Adriaan Stander; 14.01.2010

Они одинаковые, это чисто предпочтения.

Это должно дать вам хорошую идею

Операторы

!= (Не равно) Не ​​равно (не стандарт SQL-92)

‹> (Не равно) Не ​​равно

person Adriaan Stander    schedule 14.01.2010

Оператор <> входит в стандарт SQL, поэтому большинство людей, знающих SQL, привыкли к нему или, по крайней мере, знают о нем. Я сам даже не знал, что оператор != до недавнего времени также был доступен в некоторых диалектах SQL.

Как вы заметили, люди склонны использовать только одно или другое, и это хороший подход, по крайней мере, для каждого проекта. Что бы вы ни выбрали, будьте последовательны.

person Guffa    schedule 14.01.2010