복붙노트

[SQL] 컬럼 데이터 유형에 BYTE과 CHAR 차이점

SQL

컬럼 데이터 유형에 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
)

해결법

  1. ==============================

    1.우리는 데이터베이스 문자 집합을 가정하자 UTF-8, 오라클의 최신 버전의 권장 설정입니다. 이 경우, 일부 문자가 데이터베이스에 저장에 1 개 이상의 바이트를 취할.

    우리는 데이터베이스 문자 집합을 가정하자 UTF-8, 오라클의 최신 버전의 권장 설정입니다. 이 경우, 일부 문자가 데이터베이스에 저장에 1 개 이상의 바이트를 취할.

    당신이 VARCHAR2 (11 BYTE)로 필드를 정의하면, 그들 중 일부는 상점, 예를 들어, 둘 이상의 바이트를 가지고 있기 때문에, 오라클은 스토리지에 대한 11 바이트까지 사용할 수 있지만 실제로 필드에 11 개 문자를 저장할 수 없습니다 영어 이외의 문자.

    당신이 오라클에게 VARCHAR2 (11 CHAR)으로 필드를 정의함으로써 그것은 상관없이 각 하나를 저장하는 데 걸리는 바이트, 11 개 문자를 보관하지 충분한 공간을 사용할 수 있습니다. 하나의 문자는 4 바이트까지 필요할 수 있습니다.

  2. ==============================

    2.하나는 11 바이트, 정확히 11 자에 대한 다른 정확히 공간이 마련되어 있습니다. 유니 코드와 같은 일부 캐릭터 세트 따라서 11 바이트 필드 인코딩에 따라보다 11 개 문자를위한 공간이있을 수 있습니다, 문자 당 하나 이상의 바이트를 사용할 수 있습니다 변형.

    하나는 11 바이트, 정확히 11 자에 대한 다른 정확히 공간이 마련되어 있습니다. 유니 코드와 같은 일부 캐릭터 세트 따라서 11 바이트 필드 인코딩에 따라보다 11 개 문자를위한 공간이있을 수 있습니다, 문자 당 하나 이상의 바이트를 사용할 수 있습니다 변형.

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

  3. ==============================

    3.시스템 구성에 따라 바이트 단위로 측정 CHAR의 크기는 다를 수 있습니다. 당신의 예에서 :

    시스템 구성에 따라 바이트 단위로 측정 CHAR의 크기는 다를 수 있습니다. 당신의 예에서 :

    결론 : 1 CHAR 1 BYTE 동일하지 않습니다.

  4. ==============================

    4.내가 Oracle 사용자 아니에요 이후는 잘 모르겠지만, 나는 차이 거짓말은 유니 코드 (UTF-32분의 16)와 같은 멀티 바이트 문자 집합을 사용하는 경우에 있다고 가정합니다. 이 경우, 11 바이트 미만 11 자에 대한 계정 수 있습니다.

    내가 Oracle 사용자 아니에요 이후는 잘 모르겠지만, 나는 차이 거짓말은 유니 코드 (UTF-32분의 16)와 같은 멀티 바이트 문자 집합을 사용하는 경우에 있다고 가정합니다. 이 경우, 11 바이트 미만 11 자에 대한 계정 수 있습니다.

    또한 그 필드 유형은 악센트 문자 또는 경우, 예를 들어 'binaryField (ETE) = "ETE"'일치하지 않습니다에 관하여 다르게 취급 될 수도 있지만 'charField (ETE) = "ETE"'(오라클에 대한하지 않도록 다시) 힘 .

  5. from https://stackoverflow.com/questions/81448/difference-between-byte-and-char-in-column-datatypes by cc-by-sa and MIT license