= (Equals) (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
Compare l'égalité de deux expressions (opérateur de comparaison) dans SQL Server.
Conventions de la syntaxe Transact-SQL
Syntaxe
expression = expression
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)