=(같음)(Transact-SQL)
SQL Server 2014에서 두 식이 같은지 비교합니다(비교 연산자).
적용 대상: SQL Server(SQL Server 2008 - current version), Windows Azure SQL 데이터베이스(최초 릴리스 - 현재 릴리스) |
구문
expression = expression
인수
- expression
유효한 식입니다. 두 식의 데이터 형식이 같지 않은 경우 한 식의 데이터 형식을 다른 식의 데이터 형식으로 암시적인 변환이 가능해야 합니다. 변환은 데이터 형식 우선 순위 규칙을 기반으로 합니다.
결과 형식
부울
주의
두 개의 NULL 식을 비교하는 경우 결과는 ANSI_NULLS 설정에 따라 다음과 같이 달라집니다.
ANSI_NULLS가 ON으로 설정되어 있는 경우, NULL 또는 알 수 없는 값은 다른 NULL 또는 알 수 없는 값과 같지 않다는 ANSI 규칙에 따라 결과는 NULL이 됩니다.
ANSI_NULLS가 OFF로 설정되어 있는 경우 NULL과 NULL의 비교 결과는 TRUE가 됩니다.
NULL과 비-NULL 값 비교의 결과는 항상 FALSE입니다. 자세한 내용은 SET ANSI_NULLS (Transact-SQL)를 참조하십시오.
예
1.간단한 쿼리에서 = 사용
다음 예에서는 Equals 연산자(=)를 사용하여 GroupName 열의 값이 'Manufacturing' 단어와 같은 HumanResources.Department 테이블의 모든 행을 반환합니다.
USE AdventureWorks2012;
GO
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
결과 집합은 다음과 같습니다.
DepartmentID Name
------------ --------------------------------------------------
7 Production
8 Production Control
(2 row(s) affected)
2.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)