UTF-8 특수문자 2byte 문제 0 2 4,377

by 손님 [2012.02.27 09:39:37]


안녕하세요.

오라클 11g UTF-8 에서 특수문자중 일부가 2byte로 계산이 되더군요.
그래서 rpad나 lpad시 2바이트 문자는 1글자로 취급해 버립니다.

SELECT RPAD('·',5,'1') FROM DUAL;
의 경우 원하는 결과가 '·111' 인데 '·1111' 가 출력 됩니다.

확인해보니 일반적인 전각문자는 3바이트로 취급해서 rpad , lpad 문제가 없지만
저렇게 일부 문자가 2바이트로 계산되어 의도 하지 않은 자릿수로 계산됩니다.

위 특수문자를  rpad나 lpad  에서 2바이트로 인식하게 할 수 없나요?

by 자답 [2012.02.27 10:01:45]
그냥 KO16KSC5601 로 변경해서 글자수 다시 계산하는걸로 처리했습니다.
더 간결하고 좋은 방법이 있으면 좀 알려 주세요.
5-(LENGTHB(CONVERT('·', 'KO16KSC5601'))-LENGTH('·'))

by 황선대 [2018.07.19 20:34:46]

Select rpad( cast( '.'as nvarchar(5)) ,5 ,'1') from dual 

사용해보세요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입