클라이언트에서도 데이터베이스에서 길이 제한 오류가 나지 않도록 문자열 길이에 제한을 둘 필요가 있다.
보통 한글과 같은 문자는 1 Byte가 아닌 2 또는 3 Bytes로 이루어진다. (주로 사용하는 UTF-8은 한글을 3 Bytes로 표현한다.)
따라서, VARCHAR가 Byte를 기준으로 한다면 VARCHAR의 길이 제한은 어떤 것을 입력하는지, 어떤 인코딩 방식을 사용하는지에 따라 달라질 것이다.
이를 모르고 사용하면 추후에 이슈가 생길 수도 있고, 데이터베이스 마이그레이션 시 문제가 발생할 여지도 있을 것 같아 주로 사용하는 DBMS 종류별로 정리해보았다.
✔ VARCHAR의 기준 - MySQL
버전 4.1 이전까지는 Bytes를 사용했다가 4.1부터는 Character를 사용한다고 한다. 즉, 어떤 문자든 종류에 상관없이 1개당 1로 인식한다.
✔ VARCHAR의 기준 - Oracle
Bytes를 사용할지 Character를 사용할지 지정이 가능하다. 디폴트(지정하지 않음)는 Bytes이다.
varchar2(10) // 10 Bytes 저장 가능
varchar2(10 byte) // 10 Bytes 저장 가능
varchar2(10 char) // 10 Character 저장 가능
✔ VARCHAR의 기준 - PostgreSQL
Character를 기준으로 한다.
출처
https://dung-beetle.tistory.com/26
https://mentha2.tistory.com/195
https://www.postgresql.org/docs/current/datatype-character.html