Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Сравнивает равенство двух выражений (оператор сравнения) в SQL Server.
Соглашения о синтаксисе Transact-SQL
Syntax
expression = expression
Arguments
expression
Любое допустимое выражение expression. Если выражения имеют разные типы данных, должна быть возможность неявно преобразовать тип данных одного выражения в тип данных другого выражения. Преобразование основано на правилах приоритетов типов данных.
Типы результатов
Boolean
Remarks
При сравнении с помощью выражения NULL результат зависит от параметра ANSI_NULLS.
Если параметр
ANSI_NULLSимеет значение ON, результатом любого сравнения со значением NULL является UNKNOWN в соответствии со стандартом ANSI, когда NULL является неизвестным значением и не может сравниваться с любым другим значением, включая другие значения NULL.Если параметр
ANSI_NULLSимеет значение OFF, результатом сравнения NULL с NULL является значение TRUE, а результатом сравнения NULL с любым другим значением — FALSE.
Дополнительные сведения см. в разделе SET ANSI_NULLS (Transact-SQL).
Логическое выражение, результатом которого является UNKNOWN, в большинстве, но не во всех случаях действует так, как если бы оно имело значение FALSE. Дополнительные сведения см. в статьях NULL и UNKNOWN (Transact-SQL) и NOT (Transact-SQL).
Examples
A. Использование = в простом запросе
В следующем примере оператор равенства используется, чтобы возвратить все строки таблицы HumanResources.Department, в которых значение столбца GroupName равно слову «Manufacturing».
-- Uses AdventureWorks
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
Вот результирующий набор.
DepartmentID Name
------------ --------------------------------------------------
7 Production
8 Production Control
(2 row(s) affected)
B. Сравнение значений NULL и значений, отличных от NULL
Следующий пример иллюстрирует использование операторов «равно» (=) и «не равно» (<>) для сравнения со значениями NULL и не NULL в таблице. Этот пример также демонстрирует, что использование конструкции IS NULL не зависит от значения параметра 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;
Вот результирующий набор.
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)
См. также
Типы данных (Transact-SQL)
Выражения (Transact-SQL)
Операторы (Transact-SQL)