2009년 11월 18일
mssql에서 한글이 포함된 문자열의 바이트수를 구하기
어제 저희 사무실에 동료직원이 크리스탈리포트 보고서에 주소를 찍는데 뭐가 잘 안된다고 요청을 하더군요.
일반적으로 주소컬럼은 주소, 세부주소 이렇게 둘로 나뉘어 있는데, 그 업체는 그걸 몰아서 전부 앞에다 집어 넣었더군요.
그래서 한 컬럼으로 출력으로 하는데.
주소길이가 길면 줄바꿈이 일어나서 두줄에 출력되고, 짧으면 한줄로만 출력이 되는 거였습니다.
그런데 크리스탈리포트는 세로로 정렬하는 옵션이 없지요.
따라서 길이가 짧은 주소는 위로 붙어보이게 됩니다.
근데 거래처에서 길이가 짧은 주소는 세로로 중간에 나오게 해달라고 요청을 했었나 봅니다.
결국 주소컬럼 두개를 화면에 놓고(하나는 원래대로 위쪽에, 다른 하나는 중간), supress옵션에 주소의 길이에 따라 숨기는 옵션을 주었습니다.
그럼 길이가 긴 주소는 위쪽의 주소가 출력이 되고, 짧은건 중간것이 출력이 되겠지요.
그런데 크리스탈리포트의 함수에 아무리 찾아봐도 유니코드 관련 처리부분이 없더군요.
주소라는게 한글과 영문 숫자들이 들어가기 때문에 유니코드로 길이가 계산이 되면 길이가 틀려지니까요.
mssql에는 있나 확인해 보니 있더군요.
select len('가나다abc123')
결과는 9, 12입니다.
한글이 포함된 경우 바이트수를 알려면 datalength이 정답~
# by | 2009/11/18 13:43 | mssql | 트랙백 | 덧글(0)





