sql >> データベース >  >> RDS >> Sqlserver

IS DISTINCTFROMとISNOTDISTINCT FROMを書き直す方法は?

    IS DISTINCT FROM 述語はSQL:1999の機能T151として導入され、その読み取り可能な否定、IS NOT DISTINCT FROM 、SQL:2003の機能T152として追加されました。これらの述語の目的は、2つの値を比較した結果が Trueであることを保証することです。 またはFalse 、決して不明

    これらの述語は、同等のタイプ(行、配列、マルチセットを含む)で機能するため、正確にエミュレートするのはかなり複雑です。ただし、SQL Serverはこれらのタイプのほとんどをサポートしていないため、nullの引数/オペランドをチェックすることでかなり遠くまで到達できます。

    • a IS DISTINCT FROM b 次のように書き直すことができます:

      ((a <> b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))
      
    • a IS NOT DISTINCT FROM b 次のように書き直すことができます:

      (NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
      

    FALSE OR NULLを考慮できないため、あなた自身の答えは正しくありません。 不明と評価されます 。たとえば、NULL IS DISTINCT FROM NULL Falseと評価する必要があります 。同様に、1 IS NOT DISTINCT FROM NULL Falseと評価する必要があります 。どちらの場合も、式は不明になります 。



    1. SQL Serverのテーブルから列名を取得するにはどうすればよいですか?

    2. Oracle Sqlの!=と<>に違いはありますか?

    3. PostgreSQLの関数からテーブルタイプを返す

    4. テーブル名が可変であるMySQLから選択する方法