Maison >base de données >tutoriel mysql >Comment puis-je réécrire les opérateurs IS DISTINCT FROM et IS NOT DISTINCT FROM dans SQL Server 2008R2 ?
Réécriture de l'opérateur IS DISTINCT FROM dans SQL Server 2008R2
SQL Server 2008R2 ne prend pas en charge les opérateurs standards IS DISTINCT FROM et IS NOT DISTINCT FROM. Cet article propose une solution pour réécrire ces expressions en utilisant une syntaxe alternative compatible avec cette version du logiciel.
EST DISTINCT DE
Le prédicat IS DISTINCT FROM est évalué à True si les deux valeurs ne sont pas égales ou si l'une des valeurs est NULL ; il est évalué à False si elles sont égales et aucune des deux n'est NULL ; Il peut être réécrit ainsi :
<code class="language-sql">((a != b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))</code>
Exemple :
<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>
N'EST PAS DISTINCT DE
L'opérateurIS NOT DISTINCT FROM est évalué à True si les deux valeurs sont égales ou les deux sont NULL, et est évalué à False si elles ne sont pas égales et pas toutes les deux NULL. Il peut être réécrit comme :
<code class="language-sql">(NOT (a != b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))</code>
Exemple :
<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>
Remarque :
Le remplacement fourni garantit que le résultat est toujours vrai ou faux, évitant ainsi l'état inconnu qui peut se produire avec les opérandes NULL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!