Udostępnij za pomocą


= (Równa się) (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Porównuje równość dwóch wyrażeń (operator porównania) w programie SQL Server.

Transact-SQL konwencje składni

Syntax

expression = expression  

Arguments

expression
Jest dowolnym prawidłowym wyrażeniem. Jeśli wyrażenia nie są tego samego typu danych, typ danych dla jednego wyrażenia musi być niejawnie konwertowany na typ danych drugiego. Konwersja jest oparta na regułach pierwszeństwa typu danych.

Typy wyników

logiczny

Remarks

Podczas porównywania przy użyciu wyrażenia NULL wynik zależy ANSI_NULLS od ustawienia:

  • Jeśli ANSI_NULLS jest ustawiona wartość WŁĄCZONE, wynik porównania z wartością NULL jest NIEZNANY, zgodnie z konwencją ANSI, że wartość NULL jest nieznaną wartością i nie można jej porównać z żadną inną wartością, w tym z innymi wartościami NUL.

  • Jeśli ANSI_NULLS jest ustawiona wartość OFF, wynik porównania wartości NULL z wartością NULL ma wartość TRUE, a wynikiem porównania wartości NULL z dowolną inną wartością jest FAŁSZ.

Aby uzyskać więcej informacji, zobacz SET ANSI_NULLS (Transact-SQL).

Wyrażenie logiczne powodujące nieznany zachowuje się podobnie do wartości FALSE w większości, ale nie we wszystkich przypadkach. Aby uzyskać więcej informacji, zobacz NULL i UNKNOWN (Transact-SQL) i NOT (Transact-SQL).

Examples

A. Używanie = w prostym zapytaniu

W poniższym przykładzie użyto operatora Equals, aby zwrócić wszystkie wiersze w HumanResources.Department tabeli, w której wartość w GroupName kolumnie jest równa słowu "Produkcja".

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

Oto zestaw wyników.

  
DepartmentID Name  
------------ --------------------------------------------------  
7            Production  
8            Production Control  
  
(2 row(s) affected)  
  

B. Porównywanie wartości NULL i innych niż NULL

W poniższym przykładzie użyto operatorów porównania Equals (=) i Not Equal To (<>), aby porównać wartości i NULL wartości inne niż w tabeli. W przykładzie pokazano również, że IS NULL nie ma to wpływu na SET ANSI_NULLS ustawienie.

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

Oto zestaw wyników.

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)  
  

Zobacz też

typy danych (Transact-SQL)
Wyrażenia (Transact-SQL)
Operatory (Transact-SQL)