Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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_NULLSjest 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_NULLSjest 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)