다음을 통해 공유


=(같음)(Transact-SQL)

SQL Server 2014에서 두 식이 같은지 비교합니다(비교 연산자).

적용 대상: SQL Server(SQL Server 2008 - current version), Windows Azure SQL 데이터베이스(최초 릴리스 - 현재 릴리스)

항목 링크 아이콘 Transact-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)

참고 항목

참조

데이터 형식(Transact-SQL)

식(Transact-SQL)

연산자(Transact-SQL)