일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 디미터 법칙
- table scan
- OpenAPI
- 스크럼기법
- Law of Demeter
- CSS
- was SQLRecoverableException
- Bandit Level 5
- avax.net.ssl.SSLHandshakeException:
- was버그
- 에자일 모형
- vue
- plsql
- 변수명 짓는법
- 명령어공부
- java.sql.SQLRecoverableException
- 프로토타입 모형
- Bandit Level 6 → Level 7
- 시스템 파악
- SQLRecoverableException
- 시스템 파악 정리
- 커맨드공부
- 나선형 모형
- mysql 튜닝
- 폭포수 모형
- pl/sql
- 인증서만료에러
- Bandit Level 6
- springboot
- 클린코드
- Today
- Total
개발햄비
[DB] VARCHAR 와 CHAR 차이 본문
VARCHAR 와 CHAR 차이 비교
CHAR(s)
- 고정 길이 문자열 정보
- s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트
- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다.
VARCHAR(s)
- CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현)
- s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트
- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다.
CHAR 에서는 문자열을 비교할 때 공백을 채워서 비교하는 방법을 사용한다. CHAR(8) 이고 'AA'가 저장되어 있다면, 'AA' 뒤에 공백 6자리를 붙여 8자리로 비교하는 것이다.
따라서 'AA' = 'AA ' 은 실제로 'AA ' = 'AA ' 가 되어 같다는 결과가 나온다.
반면에 VARCHAR 에서는 공백도 하나의 문자로 취급하므로 끝에 공백이 들어가면 다른 문자로 판단한다.
같은 예로 들면 'AA' != 'AA ' 로 공백이 있어 서로 다른 문자로 판단한다.
따라서 이름, 주소 등의 길이가 변할 수 있는 값은 VARCHAR를 사용하고, 사번, 주민등록번호와 같이 길이가 일정한 데이터는 CHAR를 사용하는게 좋다.
'개발 > DB' 카테고리의 다른 글
[DB]PL/SQL 프로시저 기초-기본 문법 3정리(%rowtype) (0) | 2019.07.02 |
---|---|
[DB]PL/SQL 연습하기 (0) | 2019.06.27 |
[DB]PL/SQL 프로시저 기초-기본 문법 2 (0) | 2019.06.26 |
[DB]PL/SQL 프로시저 기초-기본 문법 1 (0) | 2019.06.26 |
[DB] PL/SQL 란? (0) | 2019.06.19 |