Должен ли я использовать!= Или <> для не равных в T-SQL?

Я видел SQL который использует оба параметра != и <> для не равных. Какой предпочтительный синтаксис и почему?

Мне нравится !=, Потому что <> напоминает мне Visual Basic.

Ответ 1

Технически они функционируют одинаково, если вы используете SQL Сервер AKA T-SQL. Если вы используете его в хранимых процедурах, нет причин для использования одного над другим. Затем это сводится к личным предпочтениям. Я предпочитаю использовать < > , поскольку он совместим с ANSI.

Вы можете найти ссылки на различные стандарты ANSI в...

http://en.wikipedia.org/wiki/SQL

Ответ 2

Большинство баз данных поддерживают != (популярные языки программирования) и <> (ANSI).

Базы данных, поддерживающие как !=, так и <>:

Базы данных, поддерживающие стандартный оператор ANSI, исключительно:

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>

Ответ 3

'<>' относится к стандарту SQL-92, а '!=' - это собственный T-SQL-оператор. Он доступен и в других базах данных, но поскольку он не является стандартным, вы должны принимать его в каждом конкретном случае.

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

Ответ 4

Стандарт ANSI SQL определяет <> как оператор "не равно",

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (5.2 <token> and <separator>)

В соответствии со стандартом ANSI/SQL 92 нет оператора !=.

Ответ 7

Кажется, что сами Microsoft предпочитают <> - !=, о чем свидетельствуют их ограничения на таблицу. Я лично предпочитаю использовать !=, потому что я отчетливо читаю это как "не равное", но если вы введете [field1 != field2] и сохраните его как protrait, в следующий раз, когда вы его запросите, он появится как [field1 <> field2]. Это говорит мне, что правильный способ сделать это - <>.

Ответ 8

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

Мне нужно было занять несколько длинных SQL-запросов и любовно вставить их в XML файл для целой кучи глупых причин, по которым я не буду вдаваться.

Достаточно сказать, что XML вообще не с <>, и мне пришлось сменить их на != и проверить себя, прежде чем я сгребаю себя.

Ответ 9

Вы можете использовать то, что вам нравится в T-SQL. В документации говорится, что оба они работают одинаково. Я предпочитаю !=, потому что он читает "не равно" моему (C/С++/С#) виду, но гуру базы данных, похоже, предпочитают <>.

Ответ 10

Я понимаю, что синтаксис C != находится в SQL Server из-за его наследия Unix (еще в Sybase SQL Server, до Microsoft SQL Server 6.5).

Ответ 11

Одним из вариантов было бы использовать оператор NULLIF, отличный от <> или !=, который возвращает NULL, если оба аргумента равны NULLIF в Microsoft Docs. Поэтому я считаю, что предложение WHERE может быть изменено для <> и != следующим образом:

NULLIF(arg1, arg2) IS NOT NULL

Как я понял, использование <> и != в некоторых случаях не работает. Следовательно, использование вышеуказанного выражения делает нужным.

Ответ 12

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

Ответ 13

Оба они приняты в T-SQL. Однако кажется, что использование <> работает намного быстрее, чем !=. Я просто запускал сложный запрос, который использовал !=, и для запуска потребовалось в среднем около 16 секунд. Я изменил их на <>, и запрос теперь занимает около 4 секунд в среднем для запуска. Это огромное улучшение!

Ответ 14

Несмотря на то, что они работают одинаково, != означает "не равно", а <> означает большее и меньшее, чем сохраненное значение.

Рассмотрим >= или <=, и это будет иметь смысл при факторизации индексов к запросам... <> будет работать быстрее в некоторых случаях (с правильным индексом), но в некоторых других случаях (индекс бесплатно), они будут работать одинаково.

Это также зависит от того, как ваша система баз данных считывает значения != и <>. Поставщик базы данных может просто сократить его и заставить их функционировать одинаково, поэтому нет никакой выгоды в любом случае. Сервер PostgreSQL и SQL сервер не сокращает это; он читается, как он появляется выше.