= (Igual a) (Transact-SQL)

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

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

expression = expression

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

Si compara las dos expresiones NULL, el resultado depende de la configuración de ANSI_NULLS:

  • Si ANSI_NULLS se establece en ON, el resultado es NULL de acuerdo con la convención ANSI según la cual un valor NULL (o desconocido) no es igual a otro valor NULL o desconocido.

  • Si ANSI_NULLS se establece en OFF, el resultado de NULL comparado con NULL es TRUE.

La comparación de NULL con un valor no NULL siempre es igual a FALSE. Para obtener más información, vea SET ANSI_NULLS (Transact-SQL).

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'.

USE AdventureWorks2012;
GO
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 usan 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 de 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)

Vea también

Referencia

Tipos de datos (Transact-SQL)

Expresiones (Transact-SQL)

Operadores (Transact-SQL)