Maison >base de données >tutoriel mysql >Comment fonctionne l'opérateur NULL-Safe Equals () de MySQL ?

Comment fonctionne l'opérateur NULL-Safe Equals () de MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 16:29:45921parcourir

How Does MySQL's NULL-Safe Equals Operator () Work?

L'opérateur différent de NULL dans MySQL : <=>

Lorsque vous travaillez avec des requêtes SQL, vous pouvez rencontrer le <=>, soulevant des questions sur sa signification et sa syntaxe. Ce guide fournira une compréhension approfondie de cet opérateur et de ses applications.

Comprendre <=>

Le <=> est connu sous le nom de Opérateur égal à sécurité NULL. Il est analogue à l'opérateur égal régulier (=), mais avec une distinction cruciale lorsqu'il s'agit de valeurs NULL.

Opérateur égal régulier contre opérateur égal NULL-Safe

L'opérateur égal régulier (=) renvoie 0 si les opérandes sont inégaux et 1 s'ils sont égaux. Cependant, il traite les valeurs NULL comme un cas particulier, donnant comme résultat NULL dans de telles comparaisons.

L'opérateur

<=>, en revanche, gère les valeurs NULL différemment. Il renvoie 0 si les opérandes sont inégaux et 1 s'ils sont égaux, que l'un ou les deux opérandes soient NULL. Autrement dit :

  • 'a' <=> 'b' est évalué à 0
  • 'a' <=> 'a' est évalué à 1
  • 'a' <=> NULL est évalué à 0
  • NULL <=> NULL est évalué à 1

Utilité de <=>

L'opérateur

<=> est particulièrement utile dans les scénarios où les deux opérandes d'une comparaison peuvent contenir des valeurs NULL et où vous avez besoin d'un résultat de comparaison cohérent entre deux colonnes.

Une autre application pratique de cet opérateur concerne les instructions préparées, où l'espace réservé peut gérer de manière transparente à la fois les valeurs scalaires et les valeurs NULL sans avoir besoin de modifier la requête.

Opérateurs associés

MySQL propose également d'autres opérateurs pour comparer les valeurs avec NULL :

  • IS NULL : Évalue à 1 si l'opérande est NULL, et 0 sinon.
  • IS NOT NULL : Évalue à 1 si l'opérande n'est pas NULL, et 0 sinon.
Ces opérateurs peuvent être considérées comme des spécialisations de l'opérateur

<=> de MySQL. Par exemple :

  • 'a' IS NULL est équivalent à 'a' <=> NULL
  • 'a' IS NOT NULL est équivalent à NOT('a' <=> NULL)

Support et compatibilité

Le L'opérateur

<=> est spécifique à MySQL et n'est pas pris en charge sur d'autres bases de données.

La norme SQL : 2003 a introduit un prédicat,

EST [NOT] DISTINCT FROM , qui se comporte de manière identique à l'opérateur <=> de MySQL.

De plus, l'expression complexe mais universellement prise en charge suivante peut obtenir les mêmes résultats :

CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
     THEN 1
     ELSE 0
END = 1

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!

Déclaration:
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