= (Igual a) (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Compara la igualdad de dos expresiones (un operador de comparación) en SQL Server.

Convenciones de sintaxis de Transact-SQL

Sintaxis

expression = expression  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

expression
Es cualquier expresión válida. Si las expresiones no tienen el mismo tipo de datos, el tipo de datos para una expresión debe ser convertible de forma implícita al tipo de datos de la otra expresión. La conversión se basa en las reglas de prioridad de tipo de datos.

Tipos de resultado

Boolean

Comentarios

Al comparar mediante una expresión NULL, el resultado depende de la configuración de ANSI_NULLS:

  • Si ANSI_NULLS se establece en ON, el resultado de las comparaciones con NULL es UNKNOWN, según la convención ANSI de que NULL es un valor desconocido y no se puede comparar con ningún otro, incluidos otros valores NULL.

  • Si ANSI_NULLS se establece en OFF, el resultado de la comparación de NULL con NULL es TRUE, y el resultado de la comparación de NULL con cualquier otro valor es FALSE.

Para obtener más información, vea SET ANSI_NULLS (Transact-SQL).

Una expresión booleana que da como resultado UNKNOWN se comporta de forma similar en FALSE en la mayoría de los casos, aunque no en todos. Vea NULL and UNKNOWN (Transact-SQL) y NOT (Transact-SQL) para obtener más información.

Ejemplos

A. Usar = en una consulta simple

En el ejemplo siguiente se usa el operador Es igual a para devolver todas las filas de la tabla HumanResources.Department en las que el valor de la columna GroupName es igual a la palabra 'Manufacturing'.

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

El conjunto de resultados es el siguiente:

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

B. Comparar valores NULL y distintos de NULL

En el ejemplo siguiente se utilizan los operadores de comparación Es igual a (=) y No es igual a (<>) para realizar comparaciones con valores NULL y distintos de NULL en una tabla. En este ejemplo también se muestra que IS NULL no se ve afectado por el valor 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;  

El conjunto de resultados es el siguiente:

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)  
  

Consulte también

Tipos de datos (Transact-SQL)
Expresiones (Transact-SQL)
Operadores (Transact-SQL)