mysql 프로그램을 cubrid로 포팅 중인데요.
cubrid가 대소문자를 구분해서 upper()함수를 이용하려고 합니다.
그런데 필드에 한글이 있는 경우 검색결과가 이상하게 나오네요.
product 테이블에 필드명 item_name이 이 있고
item_name이 '키보드'인 상품이 등록되어 있다고 했을때.
select * from product where upper(item_name) like '키보%';
이렇게 하면 검색이 되는데.
select * from product where upper(item_name) like '키%';
이렇게 하면 검색이 안되네요.
'마우스'의 경우에는
select * from product where upper(item_name) like '마%';
이렇게 하면 검색이 되는데.
select * from product where upper(item_name) like '마우%';
이렇게 하면 검색이 안되네요.
어떻게 된 걸까요?
cubrid가 대소문자를 구분해서 upper()함수를 이용하려고 합니다.
그런데 필드에 한글이 있는 경우 검색결과가 이상하게 나오네요.
product 테이블에 필드명 item_name이 이 있고
item_name이 '키보드'인 상품이 등록되어 있다고 했을때.
select * from product where upper(item_name) like '키보%';
이렇게 하면 검색이 되는데.
select * from product where upper(item_name) like '키%';
이렇게 하면 검색이 안되네요.
'마우스'의 경우에는
select * from product where upper(item_name) like '마%';
이렇게 하면 검색이 되는데.
select * from product where upper(item_name) like '마우%';
이렇게 하면 검색이 안되네요.
어떻게 된 걸까요?
charset이 utf-8인 경우 like 검색을 정상적으로 이루어 지려면 CUBRID HOME 디렉토리의 conf 디렉토리에 존재하는 cubrid.conf(CUBRID 환경설정 파일) 파일에 single_byte_compare=yes라는 파라미터를 추가하고 DB Server를 재기동 해야 합니다.
single_byte_compare 파라미터는 스트링 비교시 1바이트 단위로 수행하도록 하는 파라미터로 default는 no로 2바이트 단위로 비교를 수행합니다.