728x90
LENGTH / LENGTHB
LENGTH(길이) / LENGTHB(바이트크기)
- 주어진 컬럼의 문자열(값)의 길이를 반환 (NUMBER/BYTE)
- 컬럼이 CHAR 인 경우 데이터의 길이와 상관없이 컬럼 전체 길이 반환
SELECT LENGTH(ENAME), LENGTHB(ENAME) FROM EMP;

저는 비교를 위해 ENAME도 같이 불러왔습니다.
LENGTH의 경우 ENAME에 있는 값의 길이를 반환합니다.
LENGTHB의 경우 ENAME에 있는 값의 바이트 값을 반환합니다.
CREATE TABLE TESTLENGTH(
V_ID VARCHAR2(5),
C_ID CHAR(5));
INSERT INTO TESTLENGTH
VALUES('한','글');

한글은 길이와 바이트의 크기를 어떻게 반환하는지 보기위해 테이블을 만들고 값을 넣어주었습니다.
SELECT V_ID AS "한글VARCHAR2",
C_ID AS "한글CHAR",
LENGTH(V_ID) AS "한글V_LENGTH",
LENGTHB(V_ID) AS "한글V_LENGTHB",
LENGTH(C_ID) AS "한글C_LENGTH",
LENGTHB(C_ID) AS "한글C_LENGTHB"
FROM TESTLENGTH;

가변 길이 문자열인 VARCHAR2의 경우 길이를 1로 반환합니다.
VARCHAR2에서 한글 1글자의 바이트 크기는 3입니다.
고정 길이 문자열인 CHAR의 경우 길이는 비어있는 공간은 NULL값으로 채웁니다.
TESTLENGTH 테이블에서 길이를 5만큼 잡아줬고 한글은 3칸을 잡아먹습니다.
그리고 비어있는 2개의 공간은 NULL값으로 매꾸게 됩니다. 한글의 길이는 3이 나옵니다.
만약 공간을 10만큼 줬다면 8이 나오겠죠?
또 만약 공간을 10만큼 주고 ‘한글’이라는 값이 있다면 길이는 6이됩니다.
CHAR에서 바이트 크기는 처음 C_ID를 만들 때 정해주었던 크기가 그대로 바이트 크기로 출력됩니다,
728x90