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

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

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

697
06 апр. '09 в 23:56
источник поделиться
14 ответов

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

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

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

464
07 апр. '09 в 0:29
источник

Связанные вопросы


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

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

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

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

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>
667
07 апр. '09 в 1:02
источник

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

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

94
06 апр. '09 в 23:59
источник

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

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

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

37
06 апр. '09 в 23:59
источник

<> - это действительный SQL в соответствии со стандартом SQL-92.

http://msdn.microsoft.com/en-us/library/aa276846(SQL.80).aspx

23
06 апр. '09 в 23:58
источник

Они оба действительны и одинаковы в отношении SQL Server,

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation

18
06 апр. '09 в 23:58
источник

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

14
05 февр. '10 в 6:19
источник

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

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

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

13
12 окт. '09 в 14:45
источник

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

9
07 апр. '09 в 0:01
источник

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

7
07 апр. '09 в 0:35
источник

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

NULLIF(arg1, arg2) IS NOT NULL

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

4
24 нояб. '14 в 8:59
источник

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

0
10 июня '17 в 20:57
источник

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

-4
21 февр. '14 в 18:30
источник

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

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

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

-9
16 марта '14 в 23:29
источник

Посмотрите другие вопросы по меткам или Задайте вопрос