= (равно) (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Сравнивает равенство двух выражений (оператор сравнения) в SQL Server.
Соглашения о синтаксисе Transact-SQL
Синтаксис
expression = expression
Аргументы
выражение
Любое допустимое выражение expression. Если выражения имеют разные типы данных, должна быть возможность неявно преобразовать тип данных одного выражения в тип данных другого выражения. Преобразование основано на правилах приоритетов типов данных.
Типы результата
Логический
Замечания
При сравнении с помощью выражения 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).
Примеры
А. Использование = в простом запросе
В следующем примере оператор равенства используется, чтобы возвратить все строки таблицы 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)