[ORACLE] 오라클 LENGTH, LENGTHB 차이점 한글

LENGTH, LENGTHB 차이점

오라클에서 문자열에 대해 길이를 가져오는 함수중에 LENGTH, LENGTHB 가 대표적으로 있습니다.

 

legnth 와 lenthb의 차이점을 알아보겠습니다.

 

LENGTH(char) : 문자열 길이 반환하는 함수(공백포함)

LENGTH는 순수한 문자열의 길이를 반환합니다.

 

LENGTHB(char) : 문자열의 byte 반환하는 함수(공백포함)

LENGTHB는 byte단위로 반환해주기 떄문에 한글이 포함되어있는 byte를 반환합니다

※한글 바이트의 경우 DB 캐릭터셋의 방식에 따라 바이트의 수가 달라집니다.

 

 

사용하고 있는 DB의 캐릭터셋을 확인하는 방법은 아래쪽에 설명을 따로 하겠습니다.

 

LENGTH, LENGTHB 예제

WITH TEST_TB AS (
    select '가나다라마' as a
    ,'abcd' as b
    ,'123' as c
    from dual
)
select length(a), lengthb(a), length(b), lengthb(b), length(c), lengthb(c) FROM TEST_TB;

 

LENGTH(A) 는 순수한 문자열의 길이인 5가 반환되었습니다.

LENGTHB(A) 는 한글문자열이기 떄문에 길이가 10이 반환되었습니다.(글쓴이의 DB 케릭터셋은 한글 2byte)

 

LENGTH(B) 는 순수한 문자열의 길이인 4가 반환되었습니다.

LENGTHB(B) 는 한글이 아니여서 문자열의 길이인 4가 반환되었습니다.

 

LENGTH(C) 는 순수한 문자열의 길이인 3가 반환되었습니다.

LENGTHB(C) 한글이 아니여서 문자열의 길이인 3가 반환되었습니다.

 

 

DB 케릭터셋 확인방법

select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET';

KO16KSC5601

완성형 한글입니다. 가장 많이 사용됩니다.

2,350자의 한글과 4,888자의 한자, 영문, 기호 및 히라가나,가타카나를 표현합니다.(한글 바이트 : 2btye)

 

KO16MSWIN949

조합형 한글입니다. 완성형을 포함하여 11,172자의 한글을 표현합니다.(한글 바이트 : 2byte)

 

AL32UTF8

유니코드의 CES중의 한 부분입니다. 11,172자의 한글을 표현합니다.(한글 바이트: 3byte)

 

댓글

Designed by JB FACTORY