【初心者向け】T-SQL != と <> の使い分け
T-SQLで!=と<> どっちを使う?
歴史
<>
: 1980年代から存在する、歴史のある演算子!=
: SQL Server 2008で導入された比較的新しい演算子
読みやすさ
<>
: 見た目的に分かりにくく、初心者には誤解を招きやすい!=
: プログラミング言語でよく使われる記号で、読みやすい
パフォーマンス
!=
: わずかに高速<>
: ほとんどの場合、パフォーマンスの違いは無視できる
互換性
<>
: すべてのデータベースで動作!=
: 古いデータベースでは動作しない可能性がある
その他
!=
: 一部のツールでは、<>
よりも優先的に解釈される
- 可読性と互換性を重視する場合は
<>
- パフォーマンスを重視する場合は
!=
- コードの統一性を重視する場合は、プロジェクト内で統一する
補足
- どちらの演算子も、NULL値と比較する際には注意が必要です。詳細は以下の記事を参照してください。
Access SQL と SQL Server TSQL の比較 - Microsoft Support: https://support.microsoft.com/ja-jp/topic/access-sql-%E3%81%A8-sql-server-tsql-%E3%81%AE%E6%AF%94%E8%BC%83-f09f180f-c005-4ff3-812f-14a5eb7902c8
- その他、T-SQLの演算子について詳しく知りたい場合は、以下の記事を参照してください。
-- != を使用
SELECT *
FROM Employees
WHERE Salary != 100000;
-- <> を使用
SELECT *
FROM Employees
WHERE Salary <> 100000;
このコードは、Salary
列が100000と等しくないすべての従業員のレコードを返します。
- 上記の例では、
!=
と<>
は同じ結果を返します。 - しかし、
NULL
値との比較など、状況によっては異なる結果を返す場合もあります。
他の方法
CASE式
SELECT *
FROM Employees
CASE Salary
WHEN 100000 THEN 'Equal'
ELSE 'Not Equal'
END AS SalaryStatus;
このコードは、Salary
列が100000と等しい場合はEqual
、等しくない場合はNot Equal
を返します。
IS NOT NULL
SELECT *
FROM Employees
WHERE Salary IS NOT NULL
AND Salary != 100000;
NOT EXISTS
SELECT *
FROM Employees
WHERE NOT EXISTS (
SELECT *
FROM Salaries
WHERE Salary = 100000
);
これらの方法は、それぞれ異なる状況で役立ちます。
- 上記の例は、
!=
と<>
の代替方法としていくつかの例を示しています。 - それぞれの方法のメリットとデメリットを理解した上で、最適な方法を選択してください。
sql sql-server t-sql