글자수 · DB 크기 확인

공백 포함·제외 글자수, UTF-8 바이트와 DB 길이·정수 범위를 확인합니다.

최대 100,000 UTF-16 단위. 글자수는 유니코드 코드 포인트 기준이며, 공백 제외 시 띄어쓰기·탭·줄바꿈을 제거합니다.

공백 포함 글자수
0
공백 제외 글자수
0
UTF-8 바이트
0
UTF-16 단위
0

DB 자료형 · 길이 확인

바이트수는 입력값의 UTF-8 크기입니다. CHAR 패딩·길이 헤더·인덱스·행 공간은 포함하지 않습니다. 길이·정수 범위만 검사하며 DB 저장 성공을 보장하지 않습니다.

입력값은 이 브라우저에서만 처리하며 서버로 전송하거나 저장하지 않습니다.

빠른 사용법

  1. 텍스트를 입력하면 글자수와 바이트수가 갱신됩니다.
  2. String 또는 DB 종류와 자료형을 선택하세요.
  3. 문자형의 n 또는 정수 범위와 결과를 비교하세요.

글자수와 바이트수 읽기

가A😀는 3글자, UTF-8 8바이트, UTF-16 4단위입니다. 조합형 문자나 가족 이모지는 눈에 보이는 한 글자여도 여러 코드 포인트일 수 있습니다. 입력값을 정규화하거나 공백을 자동 삭제하지 않습니다.

최대 100,000 UTF-16 단위. 글자수는 유니코드 코드 포인트 기준이며, 공백 제외 시 띄어쓰기·탭·줄바꿈을 제거합니다.

DB 길이 설정 이해하기

String은 SQL 자료형이 아닌 일반 문자열의 코드 포인트 길이 검사입니다.

utf8mb4 기준. CHAR/VARCHAR의 n은 글자수입니다. 다른 열과 인덱스·행 크기 제한은 별도입니다.

utf8mb4 기준. CHAR/VARCHAR는 글자수, 정수형은 값의 범위를 검사합니다. UNSIGNED를 선택할 수 있습니다.

UTF-8 기준. CHAR/VARCHAR의 n은 글자수이며 NUL 문자는 저장할 수 없습니다.

SQL 열·AL32UTF8 기준. BYTE/CHAR를 명시적으로 선택하세요. VARCHAR2는 STANDARD 4,000바이트, EXTENDED 32,767바이트, CHAR는 2,000바이트 한도도 검사합니다. CHAR 문자 의미에서는 빈칸 패딩도 한도에 반영합니다. NUMBER(p,0)·INTEGER는 반올림 없이 정수 범위만 검사하며 저장 바이트는 계산하지 않습니다. 빈 문자열은 NULL입니다.

SQL Server 2019+ 기준. VARCHAR/CHAR는 UTF-8 collation을 가정하며 n은 바이트입니다. NVARCHAR/NCHAR는 보조 문자를 지원하는 collation에서 UTF-16 단위로 계산합니다. 기존 CP949 등의 코드 페이지와 MAX형은 지원 범위 밖입니다.

바이트수는 입력값의 UTF-8 크기입니다. CHAR 패딩·길이 헤더·인덱스·행 공간은 포함하지 않습니다. 길이·정수 범위만 검사하며 DB 저장 성공을 보장하지 않습니다.

같은 입력, 다른 DB 길이 기준

아래는 입력 데이터 크기와 선택한 열 길이의 비교입니다. DB에 실제로 접속하거나 전체 행 저장량을 추정하지 않습니다.

계산 기준확인할 텍스트사용 / 허용 글자수
MySQL / MariaDB / PostgreSQL · VARCHAR(2)文😀선택한 길이·범위에 맞습니다 · 2 / 2
Oracle · VARCHAR2(2 BYTE)文😀선택한 길이·범위에 맞지 않습니다 · 7 / 2
Oracle · VARCHAR2(2 CHAR)文😀선택한 길이·범위에 맞습니다 · 2 / 2; UTF-8: 7
SQL Server · VARCHAR(2), UTF-8文😀선택한 길이·범위에 맞지 않습니다 · 7 / 2
SQL Server · NVARCHAR(2)文😀선택한 길이·범위에 맞지 않습니다 · 3 / 2
SQL Server · NVARCHAR(3)文😀선택한 길이·범위에 맞습니다 · 3 / 3

내 DB에서 길이를 확인하는 SQL

아래 예제는 A 다음에 이모지 한 개가 오는 A😀를 비교합니다. 코드 포인트는 2개, UTF-16은 3단위, UTF-8은 5바이트입니다. 같은 텍스트라도 열의 길이 기준은 서로 다릅니다.

아래는 상수 문자열만 읽는 SELECT 예제입니다. 이 사이트에서 DB에 접속하거나 쿼리를 실행하지 않습니다. 표시된 조건에서의 예상값이며 실제 DB 실측 기록이 아닙니다.

MySQL · MariaDB · PostgreSQL

MySQL·MariaDB는 utf8mb4, PostgreSQL은 서버 문자셋 UTF8이 전제입니다. 문자 수와 바이트 수를 함께 확인하세요. MariaDB는 모드에 따라 LENGTH의 의미가 달라질 수 있어 바이트 확인에는 OCTET_LENGTH를 사용합니다.

MySQL / MariaDB · utf8mb4
SELECT CHAR_LENGTH(s) AS characters,
       OCTET_LENGTH(s) AS bytes
FROM (SELECT CONVERT(0x41F09F9880 USING utf8mb4) AS s) AS sample;
PostgreSQL · UTF8
SELECT char_length(s) AS characters,
       octet_length(s) AS bytes
FROM (SELECT convert_from(decode('41f09f9880', 'hex'), 'UTF8') AS s) AS sample;

SQL Server · NVARCHAR

SQL Server 예제는 NVARCHAR와 SC collation을 명시합니다. LEN은 마지막 공백을 세지 않지만 DATALENGTH는 포함합니다. NVARCHAR의 바이트 수를 2로 나누면 UTF-16 단위 수를 확인할 수 있습니다. UTF-8 VARCHAR 결과와 혼동하지 마세요.

SQL Server · SC collation
SELECT LEN(N'A😀' COLLATE Latin1_General_100_CI_AS_SC) AS characters,
       DATALENGTH(N'A😀') AS bytes,
       DATALENGTH(N'A😀') / 2 AS utf16_units,
       LEN(N'A😀 ' COLLATE Latin1_General_100_CI_AS_SC) AS trailing_space_len,
       DATALENGTH(N'A😀 ') AS trailing_space_bytes;

Oracle · AL32UTF8

Oracle 예제는 DB 문자셋 AL32UTF8과 VARCHAR2를 전제로 합니다. UNISTR로 만든 값을 DB 문자셋으로 변환하므로 SQL 파일에 이모지를 직접 입력할 필요가 없습니다. AL32UTF8이 아니면 문자 변환 손실과 결과 차이가 생길 수 있습니다.

Oracle · VARCHAR2
SELECT LENGTH(s) AS characters,
       LENGTHB(s) AS bytes
FROM (SELECT CAST(UNISTR('A\D83D\DE00') AS VARCHAR2(20 CHAR)) AS s FROM dual);

웹 결과와 다르면 DB 문자셋·열 타입·collation, 마지막 공백, CHAR 패딩, 입력 정규화를 먼저 비교하세요. 길이가 맞아도 NOT NULL·UNIQUE·CHECK·행 크기 제한 때문에 저장이 거절될 수 있습니다.

공식 참고 자료

관련 도구