programing

SQL Server의 char, nchar, varchar 및 nvarchar의 차이점은 무엇입니까?

telebox 2023. 4. 7. 21:07
반응형

SQL Server의 char, nchar, varchar 및 nvarchar의 차이점은 무엇입니까?

nvarchar

char,nchar,varchar , , , , 입니다.nvarcharSQL Server?

확실히 해두자면...정리하면...

  • nchar 유니코드 문자를 저장할 수 있습니다.
  • char 유니코드 문자를 저장할 수 없습니다.
  • char고정 길이입니다.지정된 문자 수에 맞게 저장 공간을 예약합니다.이 공간을 모두 사용하지 않아도 됩니다.
  • varchar 및 는 가변 길이입니다.저장하는 문자의 공백만 사용합니다.또는같은 스토리지는 예약되지 않습니다.

nchar ★★★★★★★★★★★★★★★★★」nvarchar는 2배의 스토리지 공간을 차지하므로 Unicode 지원이 필요한 경우에만 사용하는 것이 좋습니다.

은 모두, 「이러한 것은 아니다」라고 하는 것을 .varchar 1바이트, 1바이트,nvarchar2바이트입니다.이 작업의 첫 번째 부분은 실제로 아래 그림과 같이 조합에 의존합니다.

DECLARE @T TABLE
(
C1 VARCHAR(20) COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS,
C2 NVARCHAR(20)COLLATE  Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS
)

INSERT INTO @T 
    VALUES (N'中华人民共和国',N'中华人民共和国'),
           (N'abc',N'abc');

SELECT C1,
       C2,
       LEN(C1)        AS [LEN(C1)],
       DATALENGTH(C1) AS [DATALENGTH(C1)],
       LEN(C2)        AS [LEN(C2)],
       DATALENGTH(C2) AS [DATALENGTH(C2)]
FROM   @T  

돌아온다

여기에 이미지 설명 입력

에 주의: ★★★★★★★★★★★★★★★★★」 않았습니다.VARCHAR이며, 「사일런트」로 되었습니다.?.

이 조합에서 1바이트로 뉘우칠 수 있는 한자는 아직 없습니다.일반적인 서부 ASCII 집합은 단일 바이트 문자뿐입니다.

에, 「」, 「」(삽입)로부터 할 수 .nvarchar(X)에서 열로 바꿉니다.varchar(X)(X는 양쪽 인스턴스에서 동일한 숫자를 나타냅니다)를 나타내는 잘라내기 오류와 함께 실패할 수 있습니다.

는 SQL Server 2012를 하는 SC합니다.UTF-16. 에서는, 의 「Collection」이nvarchar사십육계속담, 사행하다

nchar와 char는 nvarchar와 varchar와 거의 동일한 방식으로 작동합니다.이들 사이의 유일한 차이점은 nchar/nvarchar는 Unicode 문자(확장 문자 세트를 사용해야 하는 경우 필수)를 저장하지만 varchar는 저장하지 않는다는 것입니다.

Unicode 문자는 더 많은 스토리지를 필요로 하므로 nchar/nvarchar 필드는 두 배의 공간을 차지합니다(예를 들어 이전 버전의 SQL Server에서는 nvarchar 필드의 최대 크기는 4000입니다).

이 질문은 이것과 중복됩니다.

추가 정보: nchar - 데이터에 후행 공백을 추가합니다.nvarchar - 데이터에 후행 공백을 추가하지 않습니다.

따라서 데이터 집합을 'nchar' 필드로 필터링하려면 RTRIM을 사용하여 공백을 제거할 수 있습니다.예: 브랜드라는 nchar(10) 필드에는 NIKE라는 단어가 저장됩니다.단어 오른쪽에 공백이 6개 추가됩니다.따라서 필터링할 때 표현식은 RTRIM(Fields!BRAND.Value) = "NIKE"

이게 누군가 도움이 됐으면 좋겠는데, 내가 지금 좀 힘들었거든!

기존 답변을 요약하고 수정하려는 시도는 다음과 같습니다.

ㅇㅇㅇㅇㅇ,char ★★★★★★★★★★★★★★★★★」nchar는 저장되는 문자열이 공간을 저장되는 은 사용 가능한 공간보다 작을 수 있습니다.varchar ★★★★★★★★★★★★★★★★★」nvarchar는 해당 문자열을 저장하기 위해 필요한 만큼의 스토리지 공간(및 문자열 길이를 저장하기 위해 2바이트의 오버헤드)을 사용합니다."var"는 "var"를 말합니다.

해야 할 '이해해야 할 것은 '이해해야 할 것은nchar ★★★★★★★★★★★★★★★★★」nvarchar한 글자당 정확히 2바이트를 사용하여 문자열을 저장합니다.char ★★★★★★★★★★★★★★★★★」varchar대조 코드 페이지에 의해 결정되는 인코딩을 사용합니다.일반적으로 1문자당 1바이트입니다(단, 예외는 있지만 아래 참조).한 글자당 2바이트를 사용함으로써 매우 광범위한 문자를 저장할 수 있으므로 여기서 기억해야 할 기본 사항은 다음과 같습니다.nchar ★★★★★★★★★★★★★★★★★」nvarchar국제화 지원을 원할 때는 훨씬 더 좋은 선택입니다.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

이제 좀 더 자세한 점을 말씀드리겠습니다.

ㅇㅇㅇㅇㅇ,nchar ★★★★★★★★★★★★★★★★★」nvarchar컬럼은 항상 UCS-2를 사용하여 데이터를 저장합니다.즉, 문자당 정확히2바이트가 사용되며 기본 다국어 플레인(BMP)의 Unicode 문자를 저장할 수 있습니다.nchar ★★★★★★★★★★★★★★★★★」nvarchar단, 유니코드 문자를 저장할 수 없습니다.예를 들어 위키피디아에 따르면 이집트 상형문자의 코드 포인트는 BMP 밖에 있습니다.따라서 UTF-8로 나타낼 수 있는 유니코드 문자열과 SQL Server에 저장할 수 없는 다른 진정한 유니코드 인코딩이 있습니다.nchar ★★★★★★★★★★★★★★★★★」nvarchar들판과 이집트 상형문자로 쓰인 끈도 그 중 하나일 것이다.다행히 사용자는 이 스크립트로 작성하지 않을 것입니다만, 이것은 주의할 필요가 있습니다.

했던 또 다른 은 ''라는 점이다.char ★★★★★★★★★★★★★★★★★」varchar할 수 의 예를 .(Martin Smith) 중국어_Transditional_Stroke_Order_100_CS_입니다.AS_KS_WS입니다.」를 참조해 주세요).

업데이트: SQL Server 2012에서 UTF-16 코드 페이지가 드디어 공개되었습니다(예: Latin1_General_100_CI_).AS_SC: Unicode 범위 전체를 커버할 수 있습니다.

  • char 문자 최대 길이가 8000자인 고정 길이의 문자 데이터.
  • nchar: 최대 Unicode 4000 입니다.
  • Char= 길이 = 8비트 길이
  • NChar= 길이 = 16비트 길이

nchar[(n)] (국민성)

  • 고정 길이의 Unicode 문자열 데이터.
  • n는 문자열 길이를 정의하며 1 ~4000의 값이어야 합니다.
  • 입니다.n

nvarchar [(n | max)] (국민성에 따라 다릅니다.)

  • 가변 길이의 유니코드 문자열 데이터.
  • n는 문자열 길이를 정의하며 1 ~4000의 값을 지정할 수 있습니다.
  • max는, 최대 가 22 있습니다.「 」 、 「 2 ^31 - 1 ( 2 GB ) 。
  • 스토리지 크기(바이트)는 입력된 실제 데이터 길이의 2배 + 2바이트입니다.

char [(n)] (문자)

  • 길이, 정정 、non-Unicode문자열 데이터
  • n는 문자열 길이를 정의하며 1 ~8,000의 값이어야 합니다.
  • 는 ★★★★★★★★★★★★★★★★★★★★★★」n

varchar [(n | max)] (문자에 따라 다름)

  • 가변 길이의 유니코드 이외의 문자열 데이터입니다.
  • n는 문자열 길이를 정의하며 1 ~8,000 의 값을 지정할 수 있습니다.
  • max는, 최대 가 22 있습니다.「 」 、 「 2 ^31 - 1 ( 2 GB ) 。
  • 스토리지 크기는 입력된 데이터의 실제 길이 + 2바이트입니다.

nchar(10)는 길이가 10인 고정 길이의 Unicode 문자열입니다.nvarchar(10)는 최대 길이가 10인 가변 길이의 Unicode 문자열입니다.일반적으로 모든 데이터 값이 10자인 경우 전자를 사용하고 길이가 다른 경우 후자를 사용합니다.

nchar에는 nvarchar보다 더 많은 공간이 필요합니다.

예:

nchar(100)는 5자만 입력해도 항상 100자를 저장합니다.나머지 95자는 공백으로 채워집니다.nvarchar(100)에 5글자를 저장하면 5글자가 저장됩니다.

차이점은 다음과 같습니다.

  1. n[var]char는 유니코드를 저장하고 [var]char는 단일 바이트 문자만 저장합니다.
  2. [n]char에는 정확한 길이의 고정 개수의 문자가 필요합니다.한편 [n]varchar에는 정의된 길이를 포함한 다양한 수의 문자를 사용할 수 있습니다.

또 다른 차이점은 길이입니다.nchar와 nvarchar는 모두 최대 4,000자까지 사용할 수 있습니다.char와 varchar의 길이는 최대 8000자입니다.그러나 SQL Server의 경우 최대 2,147,483,648 문자를 처리할 수 있는 [n]varchar(최대)도 사용할 수 있습니다(2기가바이트, 부호 있는 4바이트 정수).

  • nchar는 고정 길이이며 Unicode 문자를 포함할 수 있습니다.문자당 2바이트의 스토리지를 사용합니다.

  • varchar는 가변 길이이며 Unicode 문자를 포함할 수 없습니다.문자당 1바이트의 스토리지를 사용합니다.

NVARCHAR는 Unicode 문자를 저장할 수 있으며 문자당 2바이트를 사용합니다.

언급URL : https://stackoverflow.com/questions/176514/what-is-the-difference-between-char-nchar-varchar-and-nvarchar-in-sql-server

반응형