9

Следует ли мне использовать != или <> для обозначения "не равно" в T-SQL?

4

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

Лично мне больше нравится !=, так как <> напоминает мне о Visual Basic.

5 ответ(ов)

6

Технически они функционируют одинаково, если вы используете SQL Server, также известный как T-SQL. Если вы используете их в хранимых процедурах, то нет никаких причин по производительности, чтобы предпочесть один вариант другому. В конечном итоге это сводится к личным предпочтениям. Лично я предпочитаю использовать <>, так как это соответствует стандартам ANSI.

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

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

0

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

Согласно стандарту ANSI/SQL 92, оператора != не существует. В документации вы можете увидеть соответствующую часть: http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (раздел 5.2 <token> and <separator>).

Таким образом, для проверки на неравенство следует использовать <>.

0

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

0

!=, хотя и не является стандартом ANSI, в большей степени соответствует истинному духу SQL как читаемого языка. Это явно сигнализирует о том, что значения не равны.

Символ <> вызывает ассоциации с менее чем и более чем, что кажется довольно странным. Я понимаю, что имеется в виду, что это либо меньше, либо больше, а значит не равно, но такой подход довольно сложен для выражения такой простой идеи.

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

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

0

Да, вы правы. Синтаксис !=, используемый для обозначения неравенства в SQL Server, действительно имеет свои корни в Unix, так как SQL Server изначально был основан на Sybase, который был разработан для работы в среде Unix. В более ранних версиях SQL Server, до Microsoft SQL Server 6.5, использовался именно этот синтаксис. Важно отметить, что хотя в SQL стандарте для обозначения неравенства также используется оператор <>, оба варианта признаются и поддерживаются в SQL Server. Это делает язык более гибким и предоставляет разработчикам возможность использовать тот синтаксис, который им более привычен.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь