다음을 통해 공유


= (문자열 비교 또는 할당)

적용 대상: Microsoft Fabric의 Microsoft Fabric Warehouse에 있는 SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System(PDW) SQL 분석 엔드포인트

또는 절의 두 문자열을 WHERE 비교하거나 HAVING 변수 또는 열을 수식의 오른쪽에 있는 문자열 연산의 문자열 또는 결과로 설정합니다. 예를 들어 변수 @xWHERE @x = 'Adventure' 'Adventure'같으면 원래 값이 문자열 값 @x 'Adventure' 과 정확히 같은지 비교합니다. 또한 연산자를 = 대입 연산자로 사용할 수도 있습니다. 예를 들어 호출 SET @a = 'AdventureWorks'할 수 있습니다.

구문

expression = expression

인수

expression

이미지, ntext 또는 텍스트 데이터 형식을 제외하고 문자 및 이진 데이터 형식 범주에 있는 데이터 형식 중 하나의 유효한 식을 지정합니다. 두 식이 모두 동일한 데이터 형식으로 되어 있거나 식 하나가 암시적으로 다른 식의 데이터 형식으로 변환될 수 있어야 합니다.

이진 문자열과 이진 문자열 간의 문자를 비교하거나 CAST 할당할 때 또는 문자 데이터로CONVERT의 명시적 변환을 사용해야 합니다.

설명

연산자를 사용한 문자열 비교에서는 = 두 문자열이 모두 동일하다고 가정합니다. 부분 문자열 비교 옵션은 LIKE 연산자 또는 CONTAINSCONTAINSTABLE 전체 텍스트 조건자를 참조하세요.

SQL Server 데이터베이스 엔진 문자열을 공백과 비교하는 방법에 대한 ANSI/ISO SQL-92 사양(섹션 8.2, 비교 조건자, 일반 규칙 #3)을 따릅니다. ANSI 표준에는 비교에 사용되는 문자열에 대한 패딩이 필요하므로 비교하기 전에 길이가 일치합니다. 패딩은 조건자 및 절의 WHERE 의미 체계 및 HAVING 기타 Transact-SQL 문자열 비교에 직접적인 영향을 줍니다. 예를 들어 Transact-SQL은 문자열 'abc' 'abc ' 을 고려하고 대부분의 비교 작업에 해당합니다. 이 규칙의 유일한 예외는 LIKE 조건자입니다. 조건자 식의 LIKE 오른쪽에 후행 공백이 있는 값이 있는 경우 비교가 수행되기 전에 데이터베이스 엔진 두 값을 동일한 길이로 채우지 않습니다. 정의에 따라 조건자의 LIKE 목적은 간단한 문자열 같음 테스트가 아닌 패턴 검색을 용이하게 하는 것이므로 이 조건자는 앞에서 언급한 ANSI SQL-92 사양의 섹션을 위반하지 않습니다.

이 설정은 SET ANSI_PADDING 데이터베이스 엔진 문자열을 비교하기 전에 패딩하는지 여부에 영향을 주지 않습니다. SET ANSI_PADDING 는 후행 공백이 테이블에 삽입되는 값에서 잘릴지 여부에만 영향을 주므로 스토리지에 영향을 주지만 비교에는 영향을 미치지 않습니다.

예제

A. WHERE 절의 문자열 비교

SELECT LastName,
    FirstName
FROM Person.Person
WHERE LastName = 'Johnson';

B. 이진에서 변환을 사용하여 WHERE 절의 문자열 비교

DECLARE @LNameBin BINARY (100) = 0x5A68656E67;

SELECT LastName,
    FirstName
FROM Person.Person
WHERE LastName = CONVERT(VARCHAR, @LNameBin);

C. 변수에 문자열 할당

이 예제에서는 = 연산자를 사용하여 변수에 문자열 데이터를 간단하게 할당하는 방법을 보여 줍니다.

DECLARE @dbname VARCHAR(100);

SET @dbname = 'Adventure';

D. 공백과 문자열 비교

다음 쿼리는 한 쪽에 공백이 있고 다른 쪽에는 공백이 없는 문자열 간의 비교를 보여 줍니다.

CREATE TABLE #tmp (c1 VARCHAR(10));
GO

INSERT INTO #tmp VALUES ('abc ');

INSERT INTO #tmp VALUES ('abc');
GO

SELECT DATALENGTH(c1) AS 'EqualWithSpace', * FROM #tmp
WHERE c1 = 'abc ';

SELECT DATALENGTH(c1) AS 'EqualNoSpace  ', * FROM #tmp
WHERE c1 = 'abc';

SELECT DATALENGTH(c1) AS 'GTWithSpace   ', * FROM #tmp
WHERE c1 > 'ab ';

SELECT DATALENGTH(c1) AS 'GTNoSpace     ', * FROM #tmp
WHERE c1 > 'ab';

SELECT DATALENGTH(c1) AS 'LTWithSpace   ', * FROM #tmp
WHERE c1 < 'abd ';

SELECT DATALENGTH(c1) AS 'LTNoSpace     ', * FROM #tmp
WHERE c1 < 'abd';

SELECT DATALENGTH(c1) AS 'LikeWithSpace ', * FROM #tmp
WHERE c1 LIKE 'abc %';

SELECT DATALENGTH(c1) AS 'LikeNoSpace   ', * FROM #tmp
WHERE c1 LIKE 'abc%';
GO

DROP TABLE #tmp;
GO

다음 단계