Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바스크립트
- 공부
- Eclipse
- db
- 개발자
- JavaScript
- 리눅스
- oracle
- 오라클
- 안드로이드스튜디오
- 별5개
- 친구랑
- 3박4일
- 재밌당
- error
- AndroidStudio
- 1박2일
- 안드로이드
- Git
- 도쿄
- 코틀린
- kotlin
- Android
- 오류해결
- android studio
- GitHub
- 깃허브
- 개발
- Java
- 자바
Archives
- Today
- Total
dev_eunz
[ORACLE] 한글 3BYTE인데, 2BYTE 기준으로 길이맞추기. LENGTHB 사용 본문
728x90
반응형
오라클에서 어떤 포맷을 사용하느냐에 따라서
한글이 3BYTE로 인식되기도, 2BYTE로 인식되기도 한다.
나의 경우,
UTF-8 타입을 사용중이어서 3BYTE로 인식되고 있었다.
600 BYTE로 잘라서 보내야되는 데이터가 있었는데,
RPAD를 이용하여 600으로 맞췄음에도 데이터 차이가 있었다.
RPAD/LPAD를 사용할 때에는 한글을 2BYTE로 인식하고 있었다.
SELECT RPAD('오라클', 10, '1') FROM DUAL
출력 >> 오라클1111
데이터가 몇 바이트인지 확인하기 위해서는 LENGTHB 함수를 사용해야 하는데,
이 경우에 LENGTHB를 하면, 13이 나오게 되는 것이었다.
이를 어떻게 처리해야하나 🤔,
CONVERT 함수를 사용해서 한글포맷을 변경해서 길이를 구하면 된다.
+ 600에 맞춰서 데이터를 추출해야했기 때문에,
SUBSTR을 아래와 같이 함께 사용해서 처리하게 되었다.
SELECT
CASE WHEN LENGTHB(CONVERT(RPAD('오라클', 10, '1'), 'KO16MSWIN949')) > 10
THEN SUBSTR(RPAD('오라클', 10, '1'), 0, LENGTH(RPAD('오라클', 10, '1')) - LENGTHB(CONVERT(RPAD('오라클', 10, '1'), 'KO16MSWIN949')) - 10 ))
ELSE RPAD('오라클', 10, '1') END
FROM DUAL;
728x90
반응형
'IT > 프로그래밍' 카테고리의 다른 글
[스파르타코딩강의] 나홀로 코딩 패키지 수강 (0) | 2021.01.01 |
---|---|
[JAVA] 포맷 관련 (0) | 2020.11.21 |
[알고리즘] (0) | 2020.10.12 |
[MyBatis] 쿼리작성 (동적쿼리, #{} ${} 차이점, CDATA 사용) (0) | 2020.10.11 |
[코틀린 스터디] 시작 (0) | 2020.09.06 |
Comments