전문을 만들다 보니, 정해진 BYTE 대로 구성되어야 한다.
게다가 영숫자, 특수문자 등도 전각(2 BYTE)으로 만들어야 한다.
그래서 TO_MULTI_BYTE()를 써서 쿼리를 만들었다.
그런데, 이게... 생각과 약간 다르게 나온다.
왜냐하면 RPAD() 와 같이 조합해서 사용했기 때문이다.
그래서 이걸... 여러번의 테스트 끝에 답을 냈다.
간단하면서도 (개인적으로) 까다로운 거라...
꼭 공유를 해보고 싶어서 올려보게 된다.
도움되시길...
SELECT DUMP(TO_MULTI_BYTE(RPAD('김창완(1)',10))) FROM DUAL;
☞ 길이가 14바이트가 나온다.
Typ=1 Len=14: 177,232,195,162,191,207,163,168,163,177,163,169,161,161
SELECT TO_MULTI_BYTE(RPAD('김창완(1)',10)) FROM DUAL;
☞ 아래와 같이 14바이트이다.
123456789 123456789 1234567890
'김창완(1) '
SELECT RPAD('김창완',10,' ') FROM DUAL;
☞ 10바이트다.
123456789 123456789 1234567890
'김창완 '
SELECT 10-LENGTH('김창완(1)') FROM DUAL;
☞ 그냥 해봤다. 3바이트다.
SELECT LENGTH(TO_MULTI_BYTE('(1)')) FROM DUAL;
☞ 역시 그냥 해봤다. 3바이트다.
SELECT TO_MULTI_BYTE(RPAD('김창완(주)밴드',10)) FROM DUAL;
☞ 이게 잘못 생각한 부분이다. 뒤에 "밴드"가 잘려버렸다.
123456789 123456789 1234567890
'김창완(주)'
SELECT LENGTH('김창완(주)밴드') FROM DUAL;
☞ 왜냐하면 이게 8바이트이기 때문이다.
이렇게 되면 당연이 2바이트가 남기 때문에 모두 다 나와야 맞는데...
신기하게도 "밴드"가 잘려버리게 된다.
아마도 한 글자가 전각이기 때문에 2바이트로 인식되기 때문이 아닐까?
그러면 "김창완" = 6바이트, "()" = 2바이트, "주" = 2바이트
그래서 합이 10바이트가 된다.
뭔가 엇박자가 나는 부분이라 생각된다.
SELECT TO_MULTI_BYTE(RPAD('김창완(주)밴드',20)) FROM DUAL;
☞ 28바이트다. RPAD('김창완(주)밴드',20) = 14바이트('김창완(주)밴드') + 6바이트(SPACE)
123456789 123456789 1234567890
'김창완(주)밴드 '
Typ=1 Len=28: 177,232,195,162,191,207,163,168,193,214,163,169,185,234,181,229,161,161,161,161,161,161,161,161,161,161,161,161
SELECT TO_MULTI_BYTE(RPAD(TO_MULTI_BYTE('김창완(주)밴드'),20)) FROM DUAL;
☞ 24바이트다. 빈칸(SPACE)은 전각이다.
이걸로 본다면 "김창완(주)밴드"는 각각 2바이트씩 해서 8자이니 16바이트이고,
빈칸은 " "로 4자다. 16바이트에서 4바이트를 더한 것이다. 그래서 합이 20....
그러니... 엇박자가 나는 것이다.
123456789 123456789 1234567890
'김창완(주)밴드 '
Typ=1 Len=24: 177,232,195,162,191,207,163,168,193,214,163,169,185,234,181,229,161,161,161,161,161,161,161,161
SELECT RPAD(TO_MULTI_BYTE('김창완(주)밴드'),20) FROM DUAL;
☞ 그래서 결론은 요렇게 해결했다.
123456789 123456789 1234567890
'김창완(주)밴드 '
Typ=1 Len=20: 177,232,195,162,191,207,163,168,193,214,163,169,185,234,181,229,32,32,32,32
위와 같이 해보게 되었다.
결국 20바이트 짜리 텍스트를 얻게 되었다.
순서, 조합에 따라 이렇게 결과가 달라지니, 하나 하나 꼭 점검해봐야 하겠다는 결론을 얻게 된다.
(ㅎㅎㅎ 그렇다. 필자는 산울림 오랜... 팬이다. 그래서 김창완을 억수로 좋아한다. ㅋㅋㅋ)
java String값 int형 변환 int값 String형 변환, 왼쪽 0 제거 방법 (0) | 2013.07.30 |
---|---|
이클립스(Eclipse) 단축키(hot key) 모음 캡쳐해봤어요! (0) | 2013.07.05 |
이클립스 색상 테마(color theme) 설정 (1) | 2013.02.11 |
댓글 영역