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

MySQL에서 레코드 길이가 1보다 큰 데이터만 조회하는 방법

이번 글에서는 OCTET_LENGTH() 함수를 사용하여 레코드의 길이를 확인하고, 길이가 1보다 큰 레코드만 조회하는 방법을 알아보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
   UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   UserName varchar(20),
   UserGender varchar(20)
);
Query OK, 0 rows affected (0.55 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable(UserName,UserGender) values('John','M');
Query OK, 1 row affected (0.82 sec)
mysql> insert into DemoTable(UserName,UserGender) values('Carol','Male');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(UserName,UserGender) values('Mia','Female');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(UserName,UserGender) values('Emma','F');
Query OK, 1 row affected (0.17 sec)

3. 전체 레코드 조회하기

SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+----------+------------+
| UserId | UserName | UserGender |
+--------+----------+------------+
| 1      | John     | M          |
| 2      | Carol    | Male       |
| 3      | Mia      | Female     |
| 4      | Emma     | F          |
+--------+----------+------------+
4 rows in set (0.00 sec)

4. OCTET_LENGTH로 길이가 1보다 큰 레코드 조회하기

이제 핵심인 조회 쿼리입니다. WHERE 절에서 OCTET_LENGTH() 함수를 사용하면 특정 컬럼 값의 바이트 길이를 기준으로 조건을 걸 수 있습니다. 아래 쿼리는 UserGender 컬럼의 길이가 1보다 큰 레코드만 가져옵니다.

mysql> select *from DemoTable where OCTET_LENGTH(UserGender) > 1;

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

+--------+----------+------------+
| UserId | UserName | UserGender |
+--------+----------+------------+
| 2      | Carol    | Male       |
| 3      | Mia      | Female     |
+--------+----------+------------+
2 rows in set (0.00 sec)

결과를 보면 'M'과 'F'처럼 길이가 1인 값은 제외되고, 'Male'과 'Female'처럼 길이가 1보다 큰 값만 정상적으로 조회된 것을 확인할 수 있습니다.

참고: CHAR_LENGTH와의 차이점

OCTET_LENGTH()는 문자열의 바이트(byte) 길이를 반환하는 반면, CHAR_LENGTH()는 문자 개수를 기준으로 길이를 계산합니다. 한글처럼 멀티바이트 문자가 포함될 수 있는 데이터라면 목적에 맞는 함수를 선택해서 사용하는 것이 좋습니다.