SQL Server 2008R2 の IS DISTINCT FROM 演算子の書き換え
SQL Server 2008R2 は、標準の IS DISTINCT FROM 演算子と IS NOT DISTINCT FROM 演算子をサポートしていません。この記事では、このバージョンのソフトウェアと互換性のある代替構文を使用してこれらの式を書き直すソリューションを提供します。
は
とは異なりますIS DISTINCT FROM 述語は、2 つの値が等しくない場合、または値の 1 つが NULL の場合は True と評価され、それらが等しく、どちらも NULL でない場合は False と評価されます。これは次のように書き換えることができます:
<code class="language-sql">((a != b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))</code>
例:
<code class="language-sql">SELECT CASE WHEN (a != b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL) THEN 'True' ELSE 'False' END AS DistinctResult</code>
は
と区別できませんIS NOT DISTINCT FROM 演算子は、2 つの値が等しいか両方が NULL の場合は True と評価され、等しくなく、両方とも NULL ではない場合は False と評価されます。これは次のように書き換えることができます:
<code class="language-sql">(NOT (a != b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))</code>
例:
<code class="language-sql">SELECT CASE WHEN (NOT (a != b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL)) THEN 'True' ELSE 'False' END AS NotDistinctResult</code>
注:
提供されたオーバーライドにより、結果が常に True または False になることが保証され、NULL オペランドで発生する可能性のある Unknown 状態が回避されます。
以上がSQL Server 2008R2 で IS DISTINCT FROM および IS NOT DISTINCT FROM 演算子を書き換えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。