に等しくない に!=
と<>
の両方を使用するSQL
を見ました。推奨される構文は何ですか?またその理由は?
!=
は<>
を連想させるので、私はVisual Basic
が好きです。
技術的には、SQL Server AKA T-SQLを使用している場合は同じように機能します。ストアドプロシージャで使用している場合は、一方を他方に使用するパフォーマンス上の理由はありません。それは個人的な好みになります。 ANSIに準拠しているので<>を使用することを好みます。
あなたはさまざまなANSI規格へのリンクを見つけることができます...
ほとんどのデータベースは、!=
(一般的なプログラミング言語)と<>
(ANSI)をサポートしています。
!=
と<>
の両方をサポートするデータベース:
!=
と<>
!=
と<>
!=
と<>
!=
と<>
!=
および <>
!=
および<>
!=
と<>
!=
と<>
!=
および<>
ANSI標準演算子をサポートするデータベース、 排他的に :
ANSI SQL規格では、<>
を「等しくない」演算子として定義しています。
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (5.2 <token> and <separator>
)
ANSI/SQL 92規格によると、!=
演算子はありません。
<>
は、SQL-92標準に準拠した有効なSQLです。
http://msdn.Microsoft.com/ja-jp/library/aa276846(SQL.80).aspx
Microsoft自身は、テーブルの制約からわかるように、<>
より!=
を好むようです。私は個人的には!=
を「等しくない」と明確に読んでいるので個人的に好みますが、[field1 != field2]
を入力してそれをconstraitとして保存した場合、次回クエリを行ったときには[field1 <> field2]
と表示されます。これは私にとって正しいやり方は<>
であると私に言っています。
!=
は、非ANSIであるにもかかわらず、読みやすい言語としてSQLの真の精神にもっと近いものです。それは等しくないと叫ぶ。 <>
は、それが私にとって(より少ない、より大きい)どちらが奇妙だと言っています。私の意図は、それが等しくないよりも小さいか大きいかのどちらかであるということを知っていますが、それは本当に単純なことを言うための本当に複雑な方法です。
私は、長いSQLクエリをいくつか取り、それをXMLファイルに愛情をこめて配置しなければなりませんでした。
XMLが<>
を使用してもまったくダウンしていないと言えば十分であり、私はこれらを!=
に変更して、自分自身を大破する前に自分でチェックする必要がありました。
T-SQLではどちらを使用してもかまいません。 ドキュメンテーション は両方とも同じように機能すると言います。私は!=
を好みます、なぜならそれは私の(C/C++/C#ベースの)心に「等しくない」と読めるからですが、データベースの達人は<>
を好むようです。
私は、C言語の構文!=
が、そのUNIXの遺産(Microsoft SQL Server 6.5より前のSybase SQL Serverに由来)のためにSQL Serverにあることを理解しています。
1つの代替方法は、2つの引数が等しい場合にNULLを返す<>
または!=
以外のNULLIF演算子を使用することです Microsoft DocsではNULLIF 。したがって、次のように<>
および!=
のWHERE句を変更できると考えています。
NULLIF(arg1, arg2) IS NOT NULL
私が見つけたように、<>
と!=
の使用は、場合によっては日付に対して機能しません。したがって、上記の式を使用することは必要です。
SQLコマンドを書くために!=
構文を使用することがあるので、<>
の代わりに<s></s>
を使用することを好みました。この場合、構文エラーを避けるために!=
を使用するほうが便利です。