=(같음)(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
SQL Server에서 두 식이 같은지 비교합니다(비교 연산자).
구문
expression = expression
인수
expression
유효한 식입니다. 두 식의 데이터 형식이 같지 않은 경우 한 식의 데이터 형식을 다른 식의 데이터 형식으로 암시적인 변환이 가능해야 합니다. 변환은 데이터 형식 우선 순위 규칙을 기반으로 합니다.
결과 형식
부울
설명
NULL 식을 사용하여 비교하는 경우 결과는 ANSI_NULLS
설정에 따라 다음과 같이 달라집니다.
ANSI_NULLS
이 ON으로 설정된 경우 NULL은 알 수 없는 값이며 다른 Null을 포함한 다른 모든 값과 비교할 수 없다는 ANSI 규칙에 따라 NULL과 비교 결과는 UNKNOWN입니다.ANSI_NULLS
이 OFF로 설정된 경우 NULL과 NULL을 비교한 결과는 TRUE이고 다른 값과 NULL을 비교한 결과는 FALSE입니다.
자세한 내용은 SET ANSI_NULLS(Transact-SQL)를 참조하세요.
결과적으로 UNKNOWN이 되는 부울 식은 모두는 아니지만 대부분의 경우 비슷하게 FALSE로 동작합니다. 자세한 내용은 NULL 및 UNKNOWN(Transact-SQL) 및 NOT(Transact-SQL)을 참조하세요.
예
A. 간단한 쿼리에서 = 사용
다음 예에서는 Equals 연산자(=)를 사용하여 HumanResources.Department
열의 값이 'Manufacturing' 단어와 같은 GroupName
테이블의 모든 행을 반환합니다.
-- 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이 아닌 값 비교
다음 예에서는 Equals(=
)와 Not Equal To(<>
) 비교 연산자를 사용하여 테이블의 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)