Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Compare l'égalité de deux expressions (opérateur de comparaison) dans SQL Server 2014.
S'applique à : SQL Server (SQL Server 2008 via la version actuelle, Base de données SQL Windows Azure (version initiale via la version actuelle. |
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 dépend des règles de priorité des types de données.
Types de résultats
Boolean
Notes
Lorsque vous comparez deux expressions NULL, le résultat dépend du paramètre ANSI_NULLS :
Si ANSI_NULLS a la valeur ON, le résultat est NULL, selon la convention ANSI qui dit qu'une valeur NULL (ou inconnue) n'est pas égale à une autre valeur NULL ou inconnue.
Si ANSI_NULLS a la valeur OFF, le résultat de la comparaison entre NULL et NULL est TRUE.
La comparaison de NULL à une valeur non NULL donne toujours le résultat FALSE. Pour plus d'informations, consultez SET ANSI_NULLS (Transact-SQL).
Exemples
A.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 ».
USE AdventureWorks2012;
GO
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
Voici l'ensemble des résultats.
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 l'ensemble des résultats.
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)