개발자
테이블의 한 컬럼을 varchar(50)으로 설정 했습니다. 50자까지 들어갈 수 있는걸로 알고 있었는데 검색해보니 mysql 버전에 따라 저 숫자 50이 글자 수 일수 있고 byte일수도 있다는 것을 알았습니다. 일단 저는 글자 수로 들어갑니다. 한글 50자 까지 잘 들어가고 있습니다. 그래서 확인해보기 위해 length를 통해 들어간 데이터의 길이를 조회했는데요 대부분의 데이터가 50을 넘고 있었습니다. 한글은 * 3을 한 수치고 영어는 한글자에 1의 길이를 차지하는 것 같습니다. 왜 이런 일이 발생하는 걸까요? 조회한 쿼리문 select length(title) as length, title From Contents where title is not null; 결과 예시 row length | title 120 | 가나다라마바사아자차카타파하가가가가가가가가가가가가가가가가가가가가가가가가가가 6 | 인형 5 | hello 17 | test 중입니다
답변 2
LENGTH 함수는 문자의 개수를 가져오는 것이 아니라 해당 문자의 byte수를 가져오기 때문에 문자 개수를 알 수 없습니다. LENGTH로 조회했을 때, 한글은 3byte를 차지하고 있어서 위의 결과처럼 나오게 되는 것 같아요 정확한 문자의 개수를 가져오려면 CHAR_LENGTH를 사용하시면 됩니다. varchar(50)에서 50이 의미하는건 CHAR_LENGTH로 조회했을 때의 최대값을 의미하겠네요. 아래 쿼리로 조회해보세요 SELECT CHAR_LENGTH(title) AS length, title FROM Contents WHERE title IS NOT NULL;
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!