Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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)