Compartilhar via


= (É igual a) (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

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

Convenções de sintaxe de Transact-SQL

Sintaxe

expression = expression  

Argumentos

expressão
É 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 é baseada nas regras de precedência de tipo de dados.

Tipos de resultado

Booliano

Comentários

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

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

  • Se ANSI_NULLS for definido como desativado, o resultado da comparação de NULL com NULL será TRUE, e o resultado da comparação de NULL com qualquer outro valor será FALSE.

Para obter mais informações, confira SET ANSI_NULLS (Transact-SQL).

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

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

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

Veja a seguir 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 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;  

Veja a seguir 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)  
  

Confira também

Tipos de dados (Transact-SQL)
Expressões (Transact-SQL)
Operadores (Transact-SQL)