= (Igual) (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Compara a igualdade de duas expressões (um operador de comparação) no SQL Server.

Transact-SQL convenções de sintaxe

Syntax

expression = expression  

Arguments

expression
É qualquer expressão válida. Se as expressões não forem do mesmo tipo de dados, o tipo de dados de uma expressão deve ser implicitamente convertível para o tipo de dados da outra. A conversão é baseada nas regras de precedência do tipo de dados.

Tipos de Resultados

booleano

Remarks

Quando você compara usando uma expressão NULL, o resultado depende da ANSI_NULLS configuração:

  • Se ANSI_NULLS estiver definido como ON, o resultado de qualquer comparação com NULL é UNKNOWN, seguindo a convenção ANSI de que NULL é um valor desconhecido e não pode ser comparado com qualquer outro valor, incluindo outros NULLs.

  • Se ANSI_NULLS estiver definido como OFF, o resultado da comparação de NULL com NULL é TRUE e o resultado da comparação de NULL com qualquer outro valor é FALSE.

Para mais informações, vejaSET ANSI_NULLS (Transact-SQL).

Uma expressão booleana que resulta em UNKNOWN se comporta de forma semelhante a FALSE na maioria, mas não em todos os casos. Consulte NULL e UNKNOWN (Transact-SQL) e NOT (Transact-SQL) para obter mais informações.

Examples

A. Usando = em uma consulta simples

O exemplo a seguir usa o operador Equals para retornar todas as linhas na tabela em que o HumanResources.DepartmentGroupName valor na coluna é igual à palavra 'Manufacturing'.

-- Uses AdventureWorks  
  
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 Equals (=) e Not Equal To (<>) para fazer comparações com NULL e valores não nulos em uma tabela. O exemplo também mostra que IS NULL não é afetado SET ANSI_NULLS pela configuração.

-- 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)