Varchar2와 char의 주요 차이점은 무엇입니까?
테이블 만들기:
CREATE TABLE test (
charcol CHAR(10),
varcharcol VARCHAR2(10));
SELECT LENGTH(charcol), LENGTH(varcharcol) FROM test;
결과:
LENGTH(CHARCOL) LENGTH(VARCHARCOL)
--------------- ------------------
10 1
Varchar2와 char의 차이점이 무엇인지 알려주세요.우리는 언제 둘 다 사용합니까?
이미 다음의 동작을 올바르게 설명하는 답이 여러 개 있지만,char
다음과 같은 세 가지 구체적인 경우를 제외하고는 사용하지 말아야 한다고 생각합니다.
- 보고서를 을 null이 아닌 값을 null에 입니다.
char
에서는 화할필없다니습을 .rpad()
를 들어 예를 들어, 만약에 예를들, 만약.firstname
그리고.lastname
다 " 다로 정니됩다의둘"로 정의됩니다.char(20)
,그리고나서firstname||lastname
는 더 짧은 글쓰기 방법입니다.rpad(firstname,20)||rpad(lastname,20)
를 만들다
Chuck Norris
- 인 빈 문자열 " 적인빈문을구합니다야해별"를 구별해야 .
''
그리고.null
하지만 Oracle을 할당합니다.''
char
반면 value는 value입니다.null
그렇지 않을 것입니다. 그래서 만약 차이를 구별하는 것이 중요하고, 왜 그런지 이유를 생각할 수 없다면, 당신은 그렇게 할 방법이 있습니다. - 기존의 이유로 빈 패딩이 필요한 다른 시스템에서 코드를 포팅했거나 호환해야 합니다.그 경우 당신은 그것을 고수하고 있고 나는 당신을 동정합니다.
길이가 일정하다고 해서 사용할 이유가 없습니다(예: a).Y/N
또는 예: 플그또는예코드화통래예(▁flag드코▁as▁or:)'USD'
. (는 없습니다. . 더신이않절않도지약습다니하없공을다습니간표는길기고인시도이적화지적효율신▁).(없▁length▁it▁(▁for않▁indicator다'다습니습니there▁.▁mythical▁space▁a표는'길▁efficient▁it,▁nos기.varchar2
머리 위에 빈 패딩이 있을 뿐입니다.char
), 더 값을 는 않습니다.), 를 입력하면 (으)로 입력합니다'ZZ'
의 신의에char(3)
column, ,▁as▁column▁ 저장됩니다.'ZZ '
한이 되지 ) 한 때 의존했던 일부 오래된 버전의 Oracle과도 하위 호환되지 않습니다. Oracle이 없었기 때문입니다.
(할 수 때문에확산될 수 .sales.currency%type
이제 당신의l_sale_currency
입니다.char
더 짧은 값(또는)을 위해 보이지 않게 빈칸으로 표시됩니다.''
), 를 엽니다.l_sale_currency
하지 않음l_refund_currency
당신이 할당했더라도'ZZ'
그들 둘 다에게.
일각에서는char(n)
(여기서 n은 일부 문자 길이) 값이 n자로 예상됨을 나타내며, 이는 자체 해석의 한 형태입니다.그러나 3자 형식(예를 들어 ISO-Alpha-2가 아닌 ISO-Alpha-3 국가 코드)에 대해 진지하게 생각한다면 개발자들이 이를 한눈에 볼 수 있도록 하는 대신 규칙을 시행하기 위한 제약 조건을 정의하지 않을까요?char(3)
데이터 유형을 입력하고 자체 결론을 참조하십시오.
CHAR
ANSI 호환성을 위해 Oracle 6에 도입되었습니다.구매할 데이터베이스 제품과 ANSI 호환성이 체크리스트에 나와 있거나 이전에 사용된 데이터베이스 제품을 결정하는 잠재 고객이 있을 것입니다.CHAR
표준에 를 제공해야 . ANSI는 Oracle과 동일합니다.당신은 그것을 실제로 사용해서는 안 됩니다.
차이점을 보여주는 간단한 예:
SELECT
'"'||CAST('abc' AS VARCHAR2(10))||'"',
'"'||CAST('abc' AS CHAR(10))||'"'
FROM dual;
'"'||CAST('ABC'ASVARCHAR2(10))||'"' '"'||CAST('ABC'ASCHAR(10))||'"'
----------------------------------- -------------------------------
"abc" "abc "
1 row selected.
CHA는 문자 길이가 항상 고정되어 있는 식(예: 미국 주의 우편 번호)에 유용합니다(예: CA, NY, FL, TX).
많은 잘못된 정보에 대한 혼란을 피하기 위해서입니다.다음은 성능을 포함한 차이점에 대한 몇 가지 정보입니다.
참조: https://asktom.oracle.com/pls/asktom/f?p=100:11:0 ::::P11_QUESTION_ID:266839190034684476
문자는 VARCHAR2에 불과하며 최대 길이로 공백이 채워집니다. 즉, 아래의 X열과 Y열 사이의 차이입니다.
표 t 생성( x varchar2(30), y char(30) ); t(x,y) 값에 삽입(rpad('a', ',30', 'a');
아래 X열과 Y열의 차이를 고려할 때, 이는 절대적으로 아무것도 아닙니다.
t(x,y) 값에 삽입('a',a')
즉, X는 3바이트(null 표시기, 'a'의 경우 1바이트)를 소비하고 Y는 32바이트(null 표시기, 'a'의 경우 30바이트)를 소비합니다.
음, varchar2는 어느 정도 "성능 면에서 유리할 것"입니다.char(30)가 항상 30바이트라는 것은 우리에게 전혀 도움이 되지 않습니다. 우리에게 그것은 단순히 최대 길이까지 빈 패딩된 varchar2입니다.ZERO, ZILCH, ZIPO 등의 가공에 도움이 됩니다.
여러분이 누군가가 "최대 50% 더 빠르다"고 말하는 것을 볼 때마다, 그것이 바로 그것입니다. 예도 없고, 과학도 없고, 사실도 없고, 그것을 뒷받침할 이야기도 없습니다. 그저 그들을 비웃고 계속 나아가세요.
그 페이지에는 다음과 같은 다른 "구성된 것들"도 있습니다.
"모든 문자열이 저장되므로 CHAR에서 검색 속도가 더 빠릅니다. 서로의 지정된 위치, 시스템은 다음을 수행할 필요가 없습니다. 문자열 끝을 검색합니다.반면 VARCHAR에서는 시스템이 먼저 문자열의 끝을 찾은 다음 검색을 수행합니다."
거짓: 문자는 varchar2 빈 패딩일 뿐입니다. "서로 지정된 위치에" 문자열을 저장하지 않습니다.우리는 문자열의 끝을 검색합니다. 우리는 무언가를 알아내기 위해 선두 바이트 길이를 사용합니다.
CHAR
고정 길이 문자열을 저장하려면 CHAR를 사용해야 합니다.문자열 값은 디스크에 저장하기 전에 공백/공백 패딩됩니다.이 유형을 변수 길이 문자열을 저장하는 데 사용하면 디스크 공간이 많이 낭비됩니다.
VARCHAR2
VARCHAR2는 가변 길이 문자열을 저장하는 데 사용됩니다.문자열 값의 길이는 값 자체와 함께 디스크에 저장됩니다.
그리고.
At what times we use both?
그것은 모두 당신의 요구에 달려 있습니다.
CHAR 유형은 크기가 고정되어 있으므로 10바이트라고 하면 데이터베이스에 항상 10바이트를 저장하며 텍스트를 저장하든 10바이트를 비우든 상관 없습니다.
VARCHAR2 크기는 데이터베이스에 실제로 저장할 바이트 수에 따라 달라집니다.지정한 숫자는 저장할 수 있는 최대 바이트 수에 불과합니다(1바이트가 최소이지만).
고정 길이 문자열을 처리할 때는 CHAR을 사용해야 합니다(저장할 문자열의 정확한 길이를 미리 알고 있음). 그러면 데이터베이스가 정확한 길이를 알기 때문에 CHAR를 더 잘 처리하고 더 빠르게 처리할 수 있습니다.
저장된 문자열의 정확한 길이를 모를 때는 VARCHAR2를 사용해야 합니다.
둘 다 사용할 수 있는 상황은 다음과 같습니다.
name VARCHAR2(255),
zip_code CHAR(5) --if your users have only 5 place zip codes
데이터베이스에 저장할 경우 varchar2는 할당된 공간만 사용합니다.예를 들어 varchar2(1999)가 있고 테이블에 50바이트를 넣으면 52바이트가 사용됩니다.
그러나 데이터베이스에 저장된 경우 char는 항상 최대 길이를 사용하며 공백으로 추가됩니다.예를 들어 char(1999)가 있고 테이블에 50바이트를 넣으면 2000바이트가 소비됩니다.
CHAR는 고정 길이 문자열을 저장하는 데 사용됩니다.이 유형을 변수 길이 문자열을 저장하는 데 사용하면 디스크 공간이 많이 낭비됩니다.
VARCHAR2는 가변 길이 문자열을 저장하는 데 사용됩니다.
우리는 언제 둘 다 사용합니까?
이는 사용자의 요구 사항에 따라 다를 수 있습니다.
편집:-
예를 들어 크기가 10인 학생 이름 열이 있는 경우 이름을 입력합니다.CHAR(10)
열 값이 열 값 다 과 같 경 우 은 음 'RAMA'
를 삽입하면 값 오른쪽에 6개의 빈 공간이 삽입됩니다.VARCHAR 열인 경우 이름VARCHAR2(10).
그러면 Varchar는 가능한 10개의 공간 중 4개의 공간을 차지하고 나머지 6개는 다른 용도로 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/20417845/what-is-the-major-difference-between-varchar2-and-char
'sourcecode' 카테고리의 다른 글
저장한 파일로 패치를 포맷하려면 어떻게 해야 합니까? (0) | 2023.07.13 |
---|---|
Redis 없이 Spring Boot 세션을 사용할 수 있습니까? (0) | 2023.07.13 |
mongo ab에 연결할 수 없습니다. MongoError: 인증 실패 (0) | 2023.07.13 |
Excel에서 지정된 이미지 URL에 이미지를 표시하는 방법 (0) | 2023.07.13 |
R-package openxlsx의 형식 지정 비율 (0) | 2023.07.13 |