web-dev-qa-db-ja.com

T-SQLで等しくないために!=または<>を使用する必要がありますか?

に等しくない !=<>の両方を使用するSQLを見ました。推奨される構文は何ですか?またその理由は?

!=<>を連想させるので、私はVisual Basicが好きです。

751
Bob The Janitor

技術的には、SQL Server AKA T-SQLを使用している場合は同じように機能します。ストアドプロシージャで使用している場合は、一方を他方に使用するパフォーマンス上の理由はありません。それは個人的な好みになります。 ANSIに準拠しているので<>を使用することを好みます。

あなたはさまざまなANSI規格へのリンクを見つけることができます...

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

505
DBAndrew

ほとんどのデータベースは、!=(一般的なプログラミング言語)と<>(ANSI)をサポートしています。

!=<>の両方をサポートするデータベース:

ANSI標準演算子をサポートするデータベース、 排他的に

  • IBM DB2 UDB 9.5: <>
  • Microsoft Access 2010: <>
694
Bill Karwin

'<>'SQL-92標準の で、'!='独自の T-SQL演算子です。他のデータベースでも利用できますが、標準ではないため、ケースバイケースで使用する必要があります。

ほとんどの場合、接続しているデータベースがわかっているので、これは実際には問題になりません。最悪の場合、検索と置換をあなたのSQLで行わなければならないかもしれません。

103
Adam Lassek

ANSI SQL規格では、<>を「等しくない」演算子として定義しています。

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt5.2 <token> and <separator>

ANSI/SQL 92規格によると、!=演算子はありません。

40
Mehrdad Afshari

<>は、SQL-92標準に準拠した有効なSQLです。

http://msdn.Microsoft.com/ja-jp/library/aa276846(SQL.80).aspx

29
Justin Niessner
20
madcolor

Microsoft自身は、テーブルの制約からわかるように、<>より!=を好むようです。私は個人的には!=を「等しくない」と明確に読んでいるので個人的に好みますが、[field1 != field2]を入力してそれをconstraitとして保存した場合、次回クエリを行ったときには[field1 <> field2]と表示されます。これは私にとって正しいやり方は<>であると私に言っています。

15
Kyle

!=は、非ANSIであるにもかかわらず、読みやすい言語としてSQLの真の精神にもっと近いものです。それは等しくないと叫ぶ。 <>は、それが私にとって(より少ない、より大きい)どちらが奇妙だと言っています。私の意図は、それが等しくないよりも小さいか大きいかのどちらかであるということを知っていますが、それは本当に単純なことを言うための本当に複雑な方法です。

私は、長いSQLクエリをいくつか取り、それをXMLファイルに愛情をこめて配置しなければなりませんでした。

XMLが<>を使用してもまったくダウンしていないと言えば十分であり、私はこれらを!=に変更して、自分自身を大破する前に自分でチェックする必要がありました。

13
Fat Albert

T-SQLではどちらを使用してもかまいません。 ドキュメンテーション は両方とも同じように機能すると言います。私は!=を好みます、なぜならそれは私の(C/C++/C#ベースの)心に「等しくない」と読めるからですが、データベースの達人は<>を好むようです。

9
Steve Haigh

私は、C言語の構文!=が、そのUNIXの遺産(Microsoft SQL Server 6.5より前のSybase SQL Serverに由来)のためにSQL Serverにあることを理解しています。

7
Karl

1つの代替方法は、2つの引数が等しい場合にNULLを返す<>または!=以外のNULLIF演算子を使用することです Microsoft DocsではNULLIF 。したがって、次のように<>および!=のWHERE句を変更できると考えています。

NULLIF(arg1, arg2) IS NOT NULL

私が見つけたように、<>!=の使用は、場合によっては日付に対して機能しません。したがって、上記の式を使用することは必要です。

5
jitendrapurohit

SQLコマンドを書くために!=構文を使用することがあるので、<>の代わりに<s></s>を使用することを好みました。この場合、構文エラーを避けるために!=を使用するほうが便利です。

0