Compartilhar via


= (É 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).

Ícone de vínculo de tópico 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)

Consulte também

Referência

Tipos de dados (Transact-SQL)

Expressões (Transact-SQL)

Operadores (Transact-SQL)