= (Equals) (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Compare l'égalité de deux expressions (opérateur de comparaison) dans SQL Server.

Conventions de la syntaxe Transact-SQL

Syntaxe

expression = expression  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

expression
Toute expression valide. Si les expressions n'ont pas le même type de données, le type de données d'une expression doit être implicitement convertible dans le type de données de l'autre. La conversion se base sur les règles de priorité des types de données.

Types des résultats

Booléen

Notes

Quand vous effectuez une comparaison à l’aide d’une expression NULL, le résultat dépend du paramètre ANSI_NULLS :

  • Si ANSI_NULLS a la valeur ON, le résultat de toute comparaison avec la valeur NULL est UNKNOWN, conformément à la convention ANSI selon laquelle NULL est une valeur inconnue qui ne peut être comparée à aucune autre valeur, notamment d’autres valeurs NULL.

  • Si ANSI_NULLS a la valeur OFF, le résultat de la comparaison de NULL à NULL est TRUE, et le résultat de la comparaison de NULL à toute autre valeur est FALSE.

Pour plus d’informations, consultez SET ANSI_NULLS (Transact-SQL).

Une expression booléenne ayant pour résultat UNKNOWN se comporte de manière similaire à FALSE dans la plupart des cas, mais pas tous. Pour plus d’informations, consultez NULL et UNKNOWN (Transact-SQL) et NOT (Transact-SQL).

Exemples

R. Utilisation de = dans une requête simple

L'exemple suivant utilise l'opérateur d'égalité pour retourner toutes les lignes de la table HumanResources.Department dans lesquelles la valeur de la colonne GroupName est égale au mot « Manufacturing ».

-- Uses AdventureWorks  
  
SELECT DepartmentID, Name  
FROM HumanResources.Department  
WHERE GroupName = 'Manufacturing';  

Voici le jeu de résultats obtenu.

  
DepartmentID Name  
------------ --------------------------------------------------  
7            Production  
8            Production Control  
  
(2 row(s) affected)  
  

B. Comparaison des valeurs NULL et non NULL

L'exemple ci-dessous utilise les opérateurs de comparaison Égal à (=) et Différent de (<>) pour effectuer une comparaison avec des valeurs NULL et non NULL dans une table. Il montre également que l’option IS NULL n’est pas influencée par le paramètre SET ANSI_NULLS.

-- Create table t1 and insert 3 rows.  
CREATE TABLE dbo.t1 (a INT NULL);  
INSERT INTO dbo.t1 VALUES (NULL),(0),(1);  
GO  
  
-- Print message and perform SELECT statements.  
PRINT 'Testing default setting';  
DECLARE @varname int;   
SET @varname = NULL;  
  
SELECT a  
FROM t1   
WHERE a = @varname;  
  
SELECT a   
FROM t1   
WHERE a <> @varname;  
  
SELECT a   
FROM t1   
WHERE a IS NULL;  
GO  
  
-- SET ANSI_NULLS to ON and test.  
PRINT 'Testing ANSI_NULLS ON';  
SET ANSI_NULLS ON;  
GO  
DECLARE @varname int;  
SET @varname = NULL  
  
SELECT a   
FROM t1   
WHERE a = @varname;  
  
SELECT a   
FROM t1   
WHERE a <> @varname;  
  
SELECT a   
FROM t1   
WHERE a IS NULL;  
GO  
  
-- SET ANSI_NULLS to OFF and test.  
PRINT 'Testing SET ANSI_NULLS OFF';  
SET ANSI_NULLS OFF;  
GO  
DECLARE @varname int;  
SET @varname = NULL;  
SELECT a   
FROM t1   
WHERE a = @varname;  
  
SELECT a   
FROM t1   
WHERE a <> @varname;  
  
SELECT a   
FROM t1   
WHERE a IS NULL;  
GO  
  
-- Drop table t1.  
DROP TABLE dbo.t1;  

Voici le jeu de résultats obtenu.

Testing default setting  
a  
-----------  
NULL  
  
(1 row(s) affected)  
  
a  
-----------  
0  
1  
  
(2 row(s) affected)  
  
a  
-----------  
NULL  
  
(1 row(s) affected)  
  
Testing ANSI_NULLS ON  
a  
-----------  
  
(0 row(s) affected)  
  
a  
-----------  
  
(0 row(s) affected)  
  
a  
-----------  
NULL  
  
(1 row(s) affected)  
  
Testing SET ANSI_NULLS OFF  
a  
-----------  
NULL  
  
(1 row(s) affected)  
  
a  
-----------  
0  
1  
  
(2 row(s) affected)  
  
a  
-----------  
NULL  
  
(1 row(s) affected)  
  

Voir aussi

Types de données (Transact-SQL)
Expressions (Transact-SQL)
Opérateurs (Transact-SQL)