Maison > base de données > tutoriel mysql > Pourquoi NULL = NULL est-il évalué à False dans SQL Server ?

Pourquoi NULL = NULL est-il évalué à False dans SQL Server ?

Barbara Streisand
Libérer: 2025-01-20 23:12:12
original
350 Les gens l'ont consulté

Why Does NULL = NULL Evaluate to False in SQL Server?

Comparaison NULL unique de SQL Server : pourquoi NULL = NULL est souvent faux

SQL Server gère les valeurs NULL différemment de nombreux autres langages de programmation. Une source courante de confusion est le fait que NULL = NULL est généralement évalué à FALSE. Ce n'est pas un bug ; c'est un choix de conception délibéré ancré dans la définition de NULL elle-même.

Dans SQL Server, NULL représente une valeur inconnue ou manquante. Par conséquent, comparer deux valeurs NULL revient à comparer deux inconnues : il est impossible de dire avec certitude si elles sont égales car leurs valeurs ne sont pas définies. Le résultat de NULL = NULL est souvent FALSE (ou parfois NULL, selon le contexte et les paramètres du système).

Ce comportement découle de la norme ANSI SQL-92. Cependant, il est crucial de comprendre l'impact du paramètre ansi_nulls dans SQL Server.

Le rôle de ansi_nulls

Le paramètre ansi_nulls détermine la manière dont SQL Server interprète les comparaisons NULL.

  • ansi_nulls ON (Par défaut) : Sous ce paramètre (par défaut), NULL = NULL est évalué à FALSE, conformément à la norme ANSI SQL-92.

  • ansi_nulls OFF : Avec ce paramètre, NULL = NULL est évalué à TRUE. Ce comportement reflète la façon dont NULL est traité dans de nombreux autres langages de programmation, où il est souvent considéré comme une valeur spéciale représentant un état indéfini.

Exemple illustratif :

L'extrait de code suivant montre la différence :

<code class="language-sql">SET ANSI_NULLS OFF;

IF NULL = NULL
    PRINT 'TRUE';
ELSE
    PRINT 'FALSE';

SET ANSI_NULLS ON;

IF NULL = NULL
    PRINT 'TRUE';
ELSE
    PRINT 'FALSE';</code>
Copier après la connexion

Avec ansi_nulls OFF, les deux déclarations IF afficheront « VRAI ». Avec ansi_nulls ON, la première déclaration IF imprimera "FALSE", tandis que la seconde imprimera également "FALSE"

Comprendre le paramètre ansi_nulls et l'ambiguïté inhérente aux comparaisons NULL est essentiel pour écrire du code SQL Server robuste et sans erreur. Soyez toujours attentif à la façon dont les valeurs NULL sont traitées dans vos requêtes pour éviter des résultats inattendus.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal