학생 리스트로 사용하는 테이블이 있는데 이 테이블의 필드중
han_name 이라는 필드에 "홍길동" 이라는 이름이 있다면
select * from student_list where left(han_name ,1) = '홍'
이라고 했더니 결과가 나오지 않고,
select * from student_list where left(han_name ,2) = '홍'
했더니 결과가 나오네요
문자셋은 euc-kr 이고
CUBRID HOME 디렉토리의 conf 디렉토리에 존재하는 cubrid.conf(CUBRID 환경설정 파일) 파일에
single_byte_compare=yes라는 파라미터를 추가하고 DB Server를 재기동 했는데도
마찬가지 이군요
MS-SQL 에서는 영문이든 한글이든 LEFT(필드,1) 명령이 제대로 작동하는데
큐브리드에서도 이와 같이 사용자가 영문이든 한글이든 상관없이 쓸 수 없을까요?
큐브리드 버전은 3.0 베타입니다
질문하신 내용은 데이터베이스의 CharacterSet과 관련이 있는데 CUBRID는 다른 DBMS와는 달리 CharacterSet 설정이 없는 상태에서 입력하는 클라이언트의 Character Code를 그대로 저장합니다.
입력된 CharacterSet이 euc-kr이면 한글 한자는 2byte가 소요됩니다. utf-8의 경우는 3byte가 소요되고요.
따라서 euc-kr 저장된 한글을 left함수를 사용하여 자르는 경우 문자수에 byte 수인 2를 지정해줘야 정상적으로 한글을 처리할 수 있습니다. utf-8의 경우에는 3이구요.