>데이터 베이스 >MySQL 튜토리얼 >T-SQL의 NVARCHAR(MAX) 변수가 4000자만 보유하는 이유는 무엇입니까?

T-SQL의 NVARCHAR(MAX) 변수가 4000자만 보유하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-04 17:03:08823검색

Why is my NVARCHAR(MAX) variable in T-SQL only holding 4000 characters?

TSQL에서 Nvarchar(Max)에 대해 8000자가 아닌 4000자만 받는 이유는 무엇입니까?

SQL 쿼리에서 @SQL1 변수를 다음과 같이 선언했습니다. NVARCHAR(Max)는 4000자만 저장하는 문제에 직면해 있습니다. 이는 연결 중 데이터 유형의 자동 변환과 관련된 TSQL의 미묘한 동작으로 인해 발생합니다.

문제 이해:

  • @SQL1을 다음과 같이 선언할 때 NVARCHAR(Max)는 2GB의 데이터를 저장할 수 있는 용량을 가지고 있습니다. 그러나 해당 데이터 유형은 값을 할당하기 전까지는 실제로 NVARCHAR(Max)가 아닙니다.
  • 할당하기 전에 @SQL1은 본질적으로 각각 4000자보다 짧은 문자열 모음입니다(귀하의 경우 상수는 쿼리).
  • 이러한 짧은 문자열을 짧은 변수와 연결하면 각 작업에 문자열이 포함되므로 결과 데이터 유형은 NVARCHAR(4000)으로 유지됩니다. 길이는 4000자 미만입니다.
  • 결국 결과를 @SQL1에 할당하면 데이터 유형은 NVARCHAR(4000)으로 유지되고 결국 4000자만 남게 됩니다.

해결책:

@SQL1이 NVARCHAR(Max)가 되면 오른쪽에서 연결하는 데이터도 NVARCHAR(Max)인지 확인해야 합니다. 이를 수행하는 한 가지 방법은 연결하기 전에 상수나 변수를 명시적으로 NVARCHAR(Max)로 캐스팅하는 것입니다.

예를 들어 다음 코드는 @SQL1이 NVARCHAR(Max)가 되는 결과를 올바르게 생성합니다.

SET @SQL1 = N'';
SET @SQL1 = @SQL1 + CAST('SELECT DISTINCT Venue...,' AS NVARCHAR(MAX));

이렇게 하면 SELECT 문이 NVARCHAR(Max) 데이터 유형을 가진 문자열과 연결되어 결과도 NVARCHAR(최대).

위 내용은 T-SQL의 NVARCHAR(MAX) 변수가 4000자만 보유하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.