it-swarm-ko.tech

열 데이터 유형에서 BYTE와 CHAR의 차이점

오라클에서는 다음과 같은 차이점이 있습니다.

CREATE TABLE CLIENT
(
 NAME VARCHAR2(11 BYTE),
 ID_CLIENT NUMBER
)

CREATE TABLE CLIENT
(
 NAME VARCHAR2(11 CHAR), -- or even VARCHAR2(11)
 ID_CLIENT NUMBER
)
159
Guido

데이터베이스 문자 세트가 UTF-8이라고 가정 해 봅시다. 이것은 최신 버전의 Oracle에서 권장되는 설정입니다. 이 경우 일부 문자는 데이터베이스에 저장하는 데 1 바이트 이상이 걸립니다.

필드를 VARCHAR2(11 BYTE)으로 정의하면 Oracle은 저장에 최대 11 바이트를 사용할 수 있지만 실제로는 11 바이트를 저장할 수 없습니다. 영어 이외의 문자.

필드를 VARCHAR2(11 CHAR)으로 정의하면 Oracle이 각 문자를 저장하는 데 걸리는 바이트 수에 관계없이 11자를 저장할 수있는 충분한 공간을 사용할 수 있다고합니다. 단일 문자는 최대 4 바이트를 요구할 수 있습니다.

255
David Sykes

하나는 정확히 11 바이트를위한 공간이고 다른 하나는 정확히 11자를위한 공간입니다. 유니 코드 변형과 같은 일부 문자 집합은 문자 당 하나 이상의 바이트를 사용할 수 있으므로 11 바이트 필드에는 인코딩에 따라 11 자 미만의 공백이있을 수 있습니다.

참조 http://www.joelonsoftware.com/articles/Unicode.html

20

시스템 구성에 따라 BYTES로 측정 된 CHAR 크기가 달라질 수 있습니다. 귀하의 예에서 :

  1. 필드를 11로 제한 캐릭터
  2.  



16
user15453

Oracle 사용자가 아니기 때문에 확실하지 않지만 유니 코드 (UTF-16/32)와 같은 멀티 바이트 문자 세트를 사용할 때 차이점이 있다고 가정합니다. 이 경우 11 바이트는 11 자 미만을 차지할 수 있습니다.

또한 해당 필드 유형은 악센트 부호 문자 또는 대소 문자와 관련하여 다르게 취급 될 수 있습니다. 예를 들어 'binaryField (ete) = "été"'는 일치하지 않지만 'charField (ete) = "été"'는 (Oracle에 대해 확실하지 않음) .

3
Seldaek