Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 문자열 길이를 구하는 방법 – CHAR_LENGTH() 함수 완벽 정리

MySQL에서 문자열 길이 구하기

MySQL에서 지정된 문자열의 길이를 확인하려면 CHAR_LENGTH() 또는 CHARACTER_LENGTH() 문자열 함수를 사용하면 됩니다. 두 함수는 이름만 다를 뿐 완전히 동일하게 동작하며, 문자열에 포함된 문자(character)의 개수를 그대로 반환합니다.

여기서 중요한 점은 이 함수들이 각 문자가 1바이트 문자인지 멀티바이트(multi-byte) 문자인지를 구분하지 않는다는 것입니다. 즉, 영어든 한글이든 일본어든 한 글자당 1로 계산됩니다.

기본 사용 예제

mysql> Select CHAR_LENGTH('New Delhi');
+--------------------------+
| CHAR_LENGTH('New Delhi') |
+--------------------------+
| 9                        |
+--------------------------+
1 row in set (0.00 sec)

mysql> Select CHAR_LENGTH('NewDelhi');
+-------------------------+
| CHAR_LENGTH('NewDelhi') |
+-------------------------+
| 8                       |
+-------------------------+
1 row in set (0.00 sec)

mysql> Select CHARACTER_LENGTH('NewDelhi');
+------------------------------+
| CHARACTER_LENGTH('NewDelhi') |
+------------------------------+
| 8                            |
+------------------------------+
1 row in set (0.00 sec)

mysql> Select CHARACTER_LENGTH('New Delhi');
+-------------------------------+
| CHARACTER_LENGTH('New Delhi') |
+-------------------------------+
| 9                             |
+-------------------------------+
1 row in set (0.00 sec)

위 결과에서 볼 수 있듯이 공백도 하나의 문자로 계산되므로, 'New Delhi'는 9, 공백 없는 'NewDelhi'는 8을 반환합니다.

한글 등 멀티바이트 문자에서의 동작

CHAR_LENGTH()는 바이트 수가 아닌 문자 수를 세기 때문에, 한글과 같은 멀티바이트 문자도 글자 수 기준으로 정확하게 계산됩니다.

mysql> Select CHAR_LENGTH('서울'), LENGTH('서울');
+--------------------+--------------+
| CHAR_LENGTH('서울') | LENGTH('서울') |
+--------------------+--------------+
| 2                  | 6            |
+--------------------+--------------+

위 예제에서 '서울'은 두 글자이므로 CHAR_LENGTH()는 2를 반환하지만, UTF-8 환경에서 한글 한 글자가 3바이트이므로 LENGTH()는 6을 반환합니다.

LENGTH() 함수와의 차이점

MySQL에는 비슷한 목적의 LENGTH() 함수도 있습니다. 두 함수의 차이는 다음과 같습니다.

  • CHAR_LENGTH() / CHARACTER_LENGTH(): 문자 수를 반환 (멀티바이트 여부 무관)
  • LENGTH(): 문자열의 바이트 수를 반환 (인코딩에 따라 결과가 달라짐)

따라서 영문 데이터만 다룬다면 두 함수의 결과가 같지만, 한글·중국어·일본어 등 멀티바이트 문자가 포함된 데이터라면 목적에 맞는 함수를 선택하는 것이 중요합니다. 화면에 표시할 글자 수를 셀 때는 CHAR_LENGTH(), 저장 용량이나 바이트 크기를 확인할 때는 LENGTH()를 사용하는 것이 좋습니다.