VARCHAR2(10 CHAR)와 NVARCHAR2(10)의 차이점
Oracle Database 10g Express Edition(Universal)을 기본 설정으로 설치했습니다.
SELECT * FROM NLS_DATABASE_PARAMETERS;
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
둘 다CHAR그리고.NCHAR데이터 유형은 멀티바이트 문자열을 받아들이는 것 같습니다. 이 두 열 정의의 정확한 차이는 무엇입니까?
VARCHAR2(10 CHAR)
NVARCHAR2(10)
NVARCHAR2 데이터 유형은 일부 열에 대해 Unicode를 사용하고 나머지 데이터베이스에 대해 다른 문자 집합을 유지하려는 데이터베이스용으로 Oracle에 의해 도입되었습니다(VARCHAR2 사용).NVARCHAR2는 Unicode 전용 데이터형입니다.
NVARCHAR2를 사용하는 이유 중 하나는 DB가 Unicode가 아닌 문자 집합을 사용하지만 기본 문자 집합을 변경하지 않고 일부 열에 대한 Unicode 데이터를 저장할 수 있기 때문일 수 있습니다.또 다른 이유는 서로 다른 문자 집합이 동일한 데이터를 동일하게 효율적으로 저장하지 못하기 때문에 두 개의 Unicode 문자 집합(주로 서유럽에서 온 데이터의 경우 AL32UTF8, 아시아에서 온 데이터의 경우 AL16UTF16)을 사용하는 것입니다.
예제에서 두 열 모두(유니코드)VARCHAR2(10 CHAR)그리고.NVARCHAR2(10))는 같은 데이터를 저장할 수 있지만 바이트 저장소는 다릅니다.일부 문자열은 둘 중 하나에 더 효율적으로 저장될 수 있습니다.
또한 일부 기능은 NVARCHAR2에서 작동하지 않습니다. 다음 SO 질문을 참조하십시오.
Vincent Malgrat의 답변이 정확하지 않다고 생각합니다.언제NVARCHAR2Unicode에 대해서는 아무도 언급하지 않았습니다.
최초 Oracle 제공VARCHAR2그리고.NVARCHAR2로컬리제이션에 대응합니다.공통 데이터(PL/SQL 포함)가 보관되어 있습니다.VARCHAR2,아마도 그렇 것입니다US7ASCII요즘 들어서는...그럼 신청해 주세요.NLS_NCHAR_CHARACTERSET(예:WE8ISO8859P1어플리케이션의 공통 부분을 건드리지 않고 각 국가에 있는 고객의 요구에 대응합니다.
요즘 문자 집합AL32UTF8는 Unicode를 완전히 지원하는 기본값입니다.오늘 내 생각에는 더 이상 사용할 이유가 없다.NLS_NCHAR_CHARACTERSET,예.NVARCHAR2,NCHAR2,NCLOBNVARCHAR2를 지원하지 않는 Oracle 네이티브 함수가 증가하고 있으므로 피해야 합니다.아마도 유일한 이유는 주로 아시아계 캐릭터를 지원해야 할 때일 것이다.AL16UTF16이 AL32UTF8.
NVARCHAR2는 가변 길이의 문자 데이터를 저장합니다.「 」가 .NVARCHAR2시멘틱스로 는 '시멘틱스', '시멘틱스', '시멘틱스'의이기도 합니다.이것은 또한 기본 길이 의미론이기도 합니다.NVARCHAR2typedata type 니다다 。NVARCHAR2은 " " " 를 사용합니다.AL16UTF16를 Unicode로 하는UTF-16부호화를 실시합니다.문자를 저장하기 위한 용도입니다.또한 의 최대 바이트 길이NVARCHAR2는, 되어 있는 문자 에 다릅니다.VARCHAR2" " "의 최대VARCHAR2는 바이트 또는 문자 중 하나입니다.이 할 수 , 이 컬럼에는 기본 문자 집합의 문자만 저장할 수 .NVARCHAR2는 거의 모든 문자를 저장할 수 있습니다. 1 개의 「」가 하게 됩니다.4 bytes.
필드를 다음과 같이 정의합니다.
VARCHAR2(10 CHAR)Oracle에게 각 문자를 저장하는 데 필요한 바이트 수에 관계없이 10개의 문자를 저장할 수 있는 충분한 공간을 사용할 수 있다고 말합니다. 1 개의 「」가 하게 됩니다.4 bytes.NVARCHAR2(10)할 수 .2 bytes
개요:
VARCHAR2(10 CHAR)" " " " 를 할 수 .10 characters치치40 bytes(설정되어 있는 국내 문자 세트에 적용됩니다).NVARCHAR2(10)" " " " 를 할 수 .10 characters치치20 bytes(설정되어 있는 국내 문자 세트에 적용됩니다).
주의: 문자 집합은 다음과 같습니다.UTF-8,UTF-16
좋은 하루 보내세요!
nVarchar2는 Unicode 전용 스토리지입니다.
두 데이터 유형은 모두 가변 길이 문자열 데이터 유형이지만 값을 저장하는 방법에 차이가 있습니다.각 문자는 바이트 단위로 저장됩니다.아시다시피 모든 언어가 같은 길이의 알파벳을 가지고 있는 것은 아닙니다.예를 들어 영어 알파벳은 한 글자당 1바이트가 필요하지만 일본어나 중국어와 같은 언어는 한 글자당 1바이트 이상이 필요합니다.
varchar2(10)를 지정하면 10바이트의 데이터만 저장됨을 DB에 알립니다.단, nVarchar2(10)라고 하면 10자가 저장됩니다.이 경우 각 문자의 바이트 수에 대해 걱정할 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/4508351/difference-between-varchar210-char-and-nvarchar210
'programing' 카테고리의 다른 글
| ng-style로 div의 배경 이미지를 설정하는 방법 (0) | 2023.03.01 |
|---|---|
| Wordpress 테마 커스터마이저 - 사용자가 이동하고 위젯을 구성할 수 있는 영역 추가 (0) | 2023.03.01 |
| Angular 명령에서 부모 컨트롤러 호출 메서드JS (0) | 2023.03.01 |
| ORA-00911: 비활성 문자 오류 해결 방법 (0) | 2023.03.01 |
| Web Security Configr Adapter를 사용하지 않고 Authentication Manager를 노출하는 Spring Security (0) | 2023.03.01 |