= (É igual a) (Transact-SQL)
Compara a igualdade de duas expressões (um operador de comparação) na SQL Server 2014.
Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Windows Azure (versão inicial até a versão atual). |
Convenções da sintaxe Transact-SQL
Sintaxe
expression = expression
Argumentos
- expression
É qualquer expressão válida. Se as expressões não são do mesmo tipo de dados, o tipo de dados para uma expressão deve ser implicitamente conversível para o tipo de dados da outra expressão. A conversão baseia-se nas regras de precedência de tipo de dados.
Tipos de resultado
Boolean
Comentários
Quando você compara duas expressões NULL, o resultado depende da configuração ANSI_NULLS:
Se ANSI_NULLS for definido como ON, o resultado será NULL, seguindo a convenção ANSI de que um valor NULL (ou desconhecido) não é igual a outro valor NULL ou desconhecido.
Se ANSI_NULLS for definido como OFF, o resultado de NULL comparado a NULL será TRUE.
Comparar o valor NULL com um não NULL sempre resulta em FALSE. Para obter mais informações, consulte SET ANSI_NULLS (Transact-SQL).
Exemplos
A.Usando = em uma consulta simples
O exemplo a seguir usa o operador Igual a para retornar todas as linhas da tabela HumanResources.Department em que o valor na coluna GroupName é igual à palavra 'produção'.
USE AdventureWorks2012;
GO
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
Aqui está o conjunto de resultados.
DepartmentID Name
------------ --------------------------------------------------
7 Production
8 Production Control
(2 row(s) affected)
B.Comparando valores NULL e não NULL
O exemplo a seguir usa os operadores de comparação Igual a (=) e Diferente de (<>) para fazer comparações com valores NULL e não nulos em uma tabela. O exemplo também mostra que IS NULL não é afetado pela configuração 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;
Aqui está o conjunto de resultados.
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)