오라클에서 한글 바이트 수를 구해야 될 케이스가 발생합니다. 이때 오라클 내장 함수로 체크할 수 있는 방법이 있어 소개해 드리겠습니다. 참고로 오라클에서 인식하는 한글이나 다국어(영어가 아닌)의 바이트 수는 UTF-8, UTF-16, EUC-KR 등의 인코딩 방식에 따라 달라집니다.
때문에 DB 컬럼 사이즈가 동일해도 인코딩 방식에 따라 저장할 수 있는 글자수가 달라지게 됩니다.
확실하게 저장 가능한 한글 수를 체크하려면 바이트를 직접 비교하면 되는데,
이때 오라클 내장함수 lengthB() 를 사용하면 됩니다.
length()는 단순히 글자수만 반환하기 때문에 부정확합니다.
1
2
3
4
|
SELECT LENGTH('한국 서울') AS 한글_LENGTH,
LENGTHB('한국 서울') AS 한글_LENGTHB
FROM DUAL
;
|
cs |
결과를 보면 아래와 같이 lengthB()으로 원하는 값을 구했습니다.
만약 length()로 길이를 구하여 5를 리턴 받았고,
인코딩 방식을 고려하지 않고 곱하기 2로 10자로 계산해 버리면,
인코딩 방식에 따라 저장할 때 오라클 익셉션이 발생할 것입니다.
때문에 한글은 바이트 수를 계산하여 검증을 하는 게 좋습니다.
참고로 영어는 어느 인코딩 방식에서나 2 바이트로 계산됩니다~!
1
2
3
4
|
SELECT LENGTH('Korea Seoul') AS 한글_LENGTH,
LENGTHB('Korea Seoul') AS 한글_LENGTHB
FROM DUAL
;
|
cs |
'[개발] Programming > Database' 카테고리의 다른 글
오라클 null 체크 함수 NVL, NVL2 사용법과 예제 (0) | 2024.07.13 |
---|---|
오라클 날짜 계산 방법과 예제 정리 (1) | 2023.11.10 |
오라클 INSERT 문 사용 방법과 예시 (DB 데이터 저장) (0) | 2022.12.20 |
DELETE 쿼리 (오라클, MSSQL) 사용 방법, 주의 사항 (0) | 2022.11.08 |
MS SQLServerException: 문자열이나 이진 데이터는 잘립니다 - 해결 방법 (0) | 2022.08.10 |
댓글