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

MySQL에서 특정 글자 수 미만인 레코드만 조회하는 방법

MySQL에서 문자열 길이가 특정 값(X자)보다 짧은 레코드만 조회하고 싶다면 CHAR_LENGTH() 함수를 WHERE 절과 함께 사용하면 됩니다. CHAR_LENGTH()는 문자열의 글자 수를 반환하는 함수로, 이를 조건으로 활용해 원하는 길이의 데이터만 손쉽게 필터링할 수 있습니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable
-> (
-> FullName varchar(50)
-> );
Query OK, 0 rows affected (1.75 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('Chris Brown');
Query OK, 1 row affected (0.40 sec)
mysql> insert into DemoTable values('David Miller');
Query OK, 1 row affected (0.91 sec)
mysql> insert into DemoTable values('Robert Miller');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('John Smith');
Query OK, 1 row affected (0.89 sec)

3. 전체 레코드 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+---------------+
| FullName |
+---------------+
| Chris Brown |
| David Miller |
| Robert Miller |
| John Smith |
+---------------+
4 rows in set (0.00 sec)

4. 글자 수가 X자 미만인 레코드 조회하기

이제 CHAR_LENGTH() 함수를 활용해 이름 길이가 12자 미만인 레코드만 조회하는 쿼리를 작성해 보겠습니다.

mysql> select *from DemoTable where char_length(FullName) < 12;

실행 결과는 다음과 같습니다.

+-------------+
| FullName |
+-------------+
| Chris Brown |
| John Smith |
+-------------+
2 rows in set (0.00 sec)

위 결과를 보면 'Chris Brown'(11자)과 'John Smith'(10자)처럼 글자 수가 12자 미만인 레코드만 반환된 것을 확인할 수 있습니다. 반면 'David Miller'(12자)와 'Robert Miller'(13자)는 조건에 해당하지 않아 제외되었습니다.

참고: CHAR_LENGTH()와 LENGTH()의 차이

MySQL에는 비슷한 함수로 LENGTH()가 있는데, 두 함수는 다음과 같은 차이가 있습니다.

CHAR_LENGTH(): 문자열의 글자 수를 반환합니다. 한글이나 특수문자도 한 글자로 계산됩니다.
LENGTH(): 문자열의 바이트 수를 반환합니다. UTF-8 환경에서는 한글 한 글자가 3바이트로 계산되므로 결과가 달라질 수 있습니다.

따라서 한글 데이터를 다룰 때는 글자 수 기준으로 필터링하는 CHAR_LENGTH()를 사용하는 것이 안전합니다. 숫자 대신 변수나 컬럼 값을 조건으로 사용할 수도 있어, 다양한 상황에서 유연하게 활용할 수 있습니다.