Dela via


= (Lika med) (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Jämför likheten mellan två uttryck (en jämförelseoperator) i SQL Server.

Transact-SQL syntaxkonventioner

Syntax

expression = expression  

Arguments

expression
Är ett giltigt uttryck. Om uttrycken inte har samma datatyp måste datatypen för ett uttryck implicit konverteras till datatypen för det andra. Konverteringen baseras på reglerna för datatypsprioritet.

Result Types

Boolean

Remarks

När du jämför med ett NULL-uttryck beror resultatet på inställningen ANSI_NULLS :

  • Om ANSI_NULLS är inställt på PÅ är resultatet av en jämförelse med NULL okänt, enligt ANSI-konventionen att NULL är ett okänt värde och inte kan jämföras med något annat värde, inklusive andra NULL:er.

  • Om ANSI_NULLS är inställt på AV är resultatet av att jämföra NULL med NULL SANT och resultatet av att jämföra NULL med andra värden är FALSE.

Mer information finns i SET ANSI_NULLS (Transact-SQL).

Ett booleskt uttryck som resulterar i UNKNOWN fungerar på samma sätt som FALSE i de flesta fall, men inte alla fall. Mer information finns i NULL och UNKNOWN (Transact-SQL) och NOT (Transact-SQL).

Examples

A. Använda = i en enkel fråga

I följande exempel används operatorn Lika med för att returnera alla rader i HumanResources.Department tabellen där värdet i GroupName kolumnen är lika med ordet "Tillverkning".

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

Här är resultatet.

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

B. Jämföra NULL- och icke-NULL-värden

I följande exempel används jämförelseoperatorerna Equals (=) och Not Equal To (<>) för att göra jämförelser med NULL och icke-inullade värden i en tabell. Exemplet visar också att IS NULL det inte påverkas av inställningen 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;  

Här är resultatet.

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)  
  

See Also

Datatyper (Transact-SQL)
Expressions (Transact-SQL)
Operators (Transact-SQL)