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

104

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

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

Возможная копия Оракул не равен оператору user177800
Возможный дубликат Оракул не равен оператору Mesop

Ваш Ответ

4   ответа
90


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

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

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

! = легче хранить в файле XML! Mark McLaren
42

На самом деле, есть Четыре формы этого оператора:

<>
!=
^=

и даж

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

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

И такие вариации, какNOT(x = y), может быть!(x = y), так далее MatBailie
@ Dems: inOracle, логическое не является первоклассным типом вSQL (который отличается отPL/SQL). И. е. ты не можешьSELECT 1 = 1 FROM dual как в некоторых других системах. Таким образом, логические значения имеют свой собственный набор операторов, действительных только в логических контекстах WHERE илиHAVING или аналогичные пункты).NOT - единственный логический оператор отрицания в OracSQL (НАСКОЛЬКО МНЕ ИЗВЕСТНО) Quassnoi
Интересный! Я не знал о^= (увидел сам первый раз, когда я разместил ссылку на мануал). Но ваша точка зрения о кешированных запросах хорошая. a_horse_with_no_name
¬= -- worked on some obscure platforms in the dark ages - Да, они назывались "мэйнфреймы IBM". Со времен, когда мужчины были мужчинами, женщины были женщинами, динозавры бродили по земле, а компьютеры охлаждались водой. : -) Bob Jarvis
-3
Несмотря на популярность, этот сайт, к сожалению, не является надежным источником по многим темам. Этот вопрос обсуждался ранееВо. Несмотря на щедрость, никто не смог создать тестовый пример, демонстрирующий заметную разницу в производительности. Но мое предложение остается в силе - я дам вам награду в 500 баллов, если вы сможете создать тестовый пример, показывающий, что! = Быстрее, чем другие операторы, не имеющие равных. Jon Heller
1

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

Стандарт SQL (только) определяет<> как оператор "не равно". Так что я бы хотел использовать это как «лучшую практику a_horse_with_no_name
Интересный. Возможно, придется проверить все остальное, чему меня учили, стандарта SQL или нет. Спасибо за указание на это. user1403581
Вероятно, мое наследие C выходит, но я терпеть не могу<> и предпочитаю!=. Главным образом потому, что<>не кажется, что @ в своем высказывании «меньше или больше чем» предполагает, что тип данных имеет неявное упорядочение (что не обязательно верно, хотя и верно для всех типов данных SQL), тогда как!= говорит "не равный" в очень чистом смысле. Jeffrey Kemp
Стандарты кодирования часто зависят от работодателя. Если у вашего работодателя нет стандарта кодирования, для команды будет хорошей идеей выбрать общедоступный. Denise Skidmore

Похожие вопросы