[Oracle] char, nchar, varchar, nvarchar

char, nchar, varchar, nvarchar는 모두 문자를 나타내기 위한 데이터형입니다.

varchar, varchar2
이 두개의 데이터 유형은 동일한 의미의 가변길이 문자열 입니다. 둘다 데이터 길이의 상한치는 4000 바이트 입니다. 이렇게 두개의 데이터 유형은 동일합니다. 하지만 오라클 측에서 장래에 varchar를 다른 용도로 사용할 예정이라고 합니다. 그래서 varchar 데이터 유형은 권장하지 않습니다.
결론 varchr2를 사용하자!

출처: http://mainia.tistory.com/775 [녹두장군 - 상상을 현실로]

n이 붙어 있으면 유니코드 문자형임을 의미하며, n이 없으면 아스키코드 문자형임을 의미합니다.
var가 붙어 있으면 가변 길이 문자형을 의미하며, var가 없으면 고정길이 문자형을 의미합니다.


여기서 잠시 고정 길이 문자형과 가변길이 문자형을 짚고 넘어가도록 하겠습니다.
고정 길이 문자형 : 지정된 자릿수만큼 메모리를 차지한 뒤, 값을 입력받다.
변길이 문자형 : 값을 입력받은 뒤, 입력받은 자릿수 만큼 메모리를 차지한다.

예를 들어 자릿수가 5인 name이라는 속성을 하나 만들었다고 합시다. 그리고, name에 "TOM"이라는 이름을 입력하였습니다.




 만약, name이 고정길이 문자형이라면  최대 자릿수로 지정된 5만큼의 메모리 공간을 만든뒤, "Tom"을 입력받고 나머지 2개의 공간에는 공백이 들어갑니다. 이럴 경우에 Tom이라는 이름을 찾는다고 조건을 name=="Tom" 이라고 하고 찾으면 절대 못찾습니다. 왜냐하면 나머지 2개의 공간에는 공백이 들어가 있기 때문입니다. "Tom  " 이런식으로 말이죠.
이런 이유로 정 길이 문자형인 char형이나 nchar는 자릿수가 정해져있지 않은 이름등에는 사용하지 않으며, 자릿수가 확실한 주민등록번호등에 사용합니다.


정리를 해보면!
char - 고정 길이를 갖는 아스키코드 문자 데이터형
nchar - 고정 길이를 갖는 유니코드 문자 데이터형
varchar - 가변 길이를 갖는 아스키코드 문자 데이터형
nvarchar - 가변 길이를 갖는 유니코드 문자 데이터형


출처: http://rhtlrl1217.tistory.com/51 [비전공 웹 프로그래밍 도전 : - ]]

댓글