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

MySQL OCTET_LENGTH() 함수로 데이터 열에 저장된 문자 수 계산하는 방법

MySQL에서 데이터 열(column)에 저장된 문자 수를 계산하려면 OCTET_LENGTH() 함수의 인수로 해당 열 이름을 전달하기만 하면 됩니다. 이 함수는 SELECT 절에서 참조하면 각 행의 길이를 결과에 함께 표시해 주며, WHERE 절에서 사용하면 비교 값으로 활용되어 특정 조건을 만족하는 행만 반환할지 여부를 판단할 수도 있습니다.

OCTET_LENGTH() 함수의 기본 개념

OCTET_LENGTH() 함수는 인수로 전달된 문자열 또는 열 값의 옥텟(바이트) 길이를 반환합니다. latin1과 같은 단일 바이트 문자 집합을 사용하는 경우 바이트 수와 문자 수가 동일하므로, 문자 수를 세는 용도로 그대로 활용할 수 있습니다.

SELECT 절에서 활용하기

SELECT 절에서 이 함수를 호출하면 각 행에 저장된 값의 길이가 별도의 열로 출력됩니다. 아래 예시는 'Student' 테이블의 Name 열에 저장된 이름들의 길이를 확인하는 방법을 보여줍니다.

mysql> Select Name, OCTET_LENGTH(Name) As 'Str_Length' from Student;
+---------+------------+
| Name    | Str_Length |
+---------+------------+
| Gaurav  | 6          |
| Aarav   | 5          |
| Harshit | 7          |
| Gaurav  | 6          |
| Yashraj | 7          |
+---------+------------+
5 rows in set (0.00 sec)

WHERE 절에서 조건 비교로 활용하기

OCTET_LENGTH() 함수를 WHERE 절에 사용하면 길이 값을 기준으로 조건을 걸어 원하는 행만 필터링할 수 있습니다. 아래 예시는 이름 길이가 7 미만인 학생들만 조회한 결과입니다.

mysql> Select Name, OCTET_LENGTH(Name) As 'Str_Length' from Student Where OCTET_LENGTH(Name) < 7;
+--------+------------+
| Name   | Str_Length |
+--------+------------+
| Gaurav | 6          |
| Aarav  | 5          |
| Gaurav | 6          |
+--------+------------+
3 rows in set (0.06 sec)

OCTET_LENGTH()와 CHAR_LENGTH()의 차이점

OCTET_LENGTH()는 문자열의 바이트 수를 반환하는 반면, CHAR_LENGTH()는 실제 문자 수를 반환합니다. UTF-8처럼 멀티바이트 문자 집합을 사용하는 환경에서는 한글이나 특수문자가 2~3바이트로 계산되므로 두 함수의 결과가 달라질 수 있습니다. 따라서 순수한 문자 개수가 필요한 경우에는 CHAR_LENGTH()를 사용하는 것이 더 적합합니다.