Maison > base de données > tutoriel mysql > Pourquoi « NULL = NULL » renvoie-t-il False dans SQL Server (et comment « ansi_nulls » l'affecte-t-il) ?

Pourquoi « NULL = NULL » renvoie-t-il False dans SQL Server (et comment « ansi_nulls » l'affecte-t-il) ?

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

Why `NULL = NULL` is False in SQL Server (and the `ansi_nulls` Setting)

Comprendre pourquoi NULL = NULL renvoie False dans SQL Server

La gestion par SQL Server des valeurs NULL conduit souvent à des résultats inattendus. L'opérateur =, lors de la comparaison de colonnes nullables, renvoie <code>false</code> car NULL signifie une valeur inconnue ou manquante.

Une condition de clause WHERE comme nullParam = NULL est toujours évaluée à <code>false</code>. En effet, il est impossible de confirmer définitivement l'égalité entre deux quantités inconnues.

La norme SQL-92 dicte ce comportement : NULL = NULL n'est ni vrai ni faux ; ce n'est pas défini.

L'impact du ansi_nulls Cadre

Le comportement change radicalement en fonction du paramètre ansi_nulls. Avec ansi_nulls défini sur OFF, NULL = NULL est étonnamment évalué à <code>true</code>. Ceci est démontré ci-dessous :

Exemple de code :

<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

Sortie :

Avec ansi_nulls OFF :

<code>true</code>
Copier après la connexion

Avec ansi_nulls ON :

<code>false</code>
Copier après la connexion

Meilleures pratiques pour gérer les valeurs NULL

En raison de cette variabilité, il est crucial d'être conscient du paramètre ansi_nulls lorsque vous travaillez avec des comparaisons NULL. Pour éviter toute ambiguïté, utilisez toujours IS NULL et IS NOT NULL lorsque vous vérifiez les valeurs NULL. Cela garantit un comportement cohérent et prévisible quel que soit le paramètre ansi_nulls. Il s'agit de l'approche recommandée pour un code SQL fiable.

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