Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base 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_NULLSestiver 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_NULLSestiver 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 obter mais informações, consulte SET 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)
Ver também
Tipos de dados (Transact-SQL)
Expressões (Transact-SQL)
Operadores (Transact-SQL)