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

MySQL에서 4자 미만 문자열을 가진 모든 행 찾는 방법 – CHAR_LENGTH() 완벽 가이드

MySQL에서 특정 길이 이하의 문자열을 가진 행을 조회해야 하는 경우가 종종 있습니다. 이럴 때 CHAR_LENGTH() 함수를 활용하면 간단하게 해결할 수 있습니다. CHAR_LENGTH()는 문자열의 문자 개수를 반환하는 함수로, 이를 WHERE 절과 함께 사용하면 원하는 조건의 데이터를 손쉽게 필터링할 수 있습니다.

1. 테이블 생성하기

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> Name varchar(100)
-> );
Query OK, 0 rows affected (1.38 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (1.60 sec)

mysql> insert into DemoTable values('Carol');
Query OK, 1 row affected (0.25 sec)

mysql> insert into DemoTable values('David');
Query OK, 1 row affected (1.83 sec)

mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.32 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블에 저장된 모든 데이터를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------+
| Name |
+-------+
| John |
| Bob |
| Carol |
| David |
| Sam |
+-------+
5 rows in set (0.00 sec)

4. 4자 미만 문자열 조회 쿼리

이제 핵심인, 문자열 길이가 4자 미만인 모든 행을 찾는 쿼리입니다. CHAR_LENGTH(Name) < 4 조건을 WHERE 절에 적용하면 됩니다.

mysql> select *from DemoTable where CHAR_LENGTH(Name) < 4;

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

+------+
| Name |
+------+
| Bob |
| Sam |
+------+
2 rows in set (0.00 sec)

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

MySQL에는 비슷한 함수로 LENGTH()가 있는데, 두 함수는 중요한 차이점이 있습니다. LENGTH()는 문자열의 바이트(byte) 수를 반환하는 반면, CHAR_LENGTH()는 실제 문자 수를 반환합니다. 따라서 한글처럼 한 문자가 여러 바이트를 차지하는 멀티바이트 문자셋을 다룰 때는 CHAR_LENGTH()를 사용하는 것이 정확한 글자 수 기준 조회에 적합합니다.

예를 들어 '홍길동'이라는 값은 UTF-8 기준으로 LENGTH()는 9를 반환하지만, CHAR_LENGTH()는 3을 반환합니다. 문자 개수를 기준으로 데이터를 필터링하려면 반드시 CHAR_LENGTH()를 사용하세요.