Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-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)