SQL Server의 char, nchar, varchar 및 nvarchar의 차이점은 무엇입니까?
의 nvarchar
char
,nchar
,varchar
, , , , 입니다.nvarchar
SQL Server?
확실히 해두자면...정리하면...
nchar
유니코드 문자를 저장할 수 있습니다.char
유니코드 문자를 저장할 수 없습니다.char
는 고정 길이입니다.지정된 문자 수에 맞게 저장 공간을 예약합니다.이 공간을 모두 사용하지 않아도 됩니다.varchar
및 는 가변 길이입니다.저장하는 문자의 공백만 사용합니다.또는 와 같은 스토리지는 예약되지 않습니다.
nchar
★★★★★★★★★★★★★★★★★」nvarchar
는 2배의 스토리지 공간을 차지하므로 Unicode 지원이 필요한 경우에만 사용하는 것이 좋습니다.
은 모두, 「이러한 것은 아니다」라고 하는 것을 .varchar
1바이트, 1바이트,nvarchar
2바이트입니다.이 작업의 첫 번째 부분은 실제로 아래 그림과 같이 조합에 의존합니다.
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글자가 저장됩니다.
차이점은 다음과 같습니다.
- n[var]char는 유니코드를 저장하고 [var]char는 단일 바이트 문자만 저장합니다.
- [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
'programing' 카테고리의 다른 글
Microsoft SQL Server에 MySQL과 같은 Boolean 데이터 유형이 있습니까? (0) | 2023.04.07 |
---|---|
인터페이스의 배후에 있는 실제 방식의 실장에 네비게이트 할 수 있는 방법이 있습니까? (0) | 2023.04.07 |
이름이 특정 문자열로 시작하는 모든 테이블을 삭제합니다. (0) | 2023.04.07 |
각도 2 카르마 검정 '구성 요소 이름'이(가) 알려진 요소가 아닙니다. (0) | 2023.04.02 |
프로젝터 또는 javascript를 사용한 브라우저 뒤로 버튼 (0) | 2023.04.02 |