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

MySQL에서 쉼표로 구분된 값 열의 각 레코드별 쉼표 개수 계산 방법

MySQL에서 쉼표로 구분된 값 열의 쉼표 개수 계산하기

데이터베이스 작업을 하다 보면 하나의 열에 쉼표로 구분된 여러 값이 저장되어 있는 경우가 있습니다. 이럴 때 각 레코드에 쉼표가 몇 개 포함되어 있는지 확인해야 하는데, MySQL에서는 LENGTH() 함수와 REPLACE() 함수를 조합하면 아주 간단하게 해결할 수 있습니다.

핵심 원리는 전체 문자열의 길이에서 쉼표를 모두 제거한 문자열의 길이를 빼면 그 차이가 곧 쉼표의 개수가 된다는 점입니다.

1. 테이블 생성

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

mysql> create table DemoTable1510
    -> (
    -> Value varchar(50)
    -> );
Query OK, 0 rows affected (6.75 sec)

2. 레코드 삽입

INSERT 문을 사용하여 쉼표로 구분된 값들을 테이블에 삽입합니다.

mysql> insert into DemoTable1510 values('20,35');
Query OK, 1 row affected (0.57 sec)
mysql> insert into DemoTable1510 values('45,67,89');
Query OK, 1 row affected (0.99 sec)
mysql> insert into DemoTable1510 values('90,97,101,190');
Query OK, 1 row affected (1.15 sec)

3. 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select * from DemoTable1510;

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

+---------------+
| Value         |
+---------------+
| 20,35         |
| 45,67,89      |
| 90,97,101,190 |
+---------------+
3 rows in set (0.00 sec)

4. 쉼표 개수 계산 쿼리

다음은 각 레코드의 쉼표 개수를 계산하는 쿼리입니다. LENGTH(Value)에서 REPLACE()로 쉼표를 제거한 후의 길이를 빼는 방식입니다.

mysql> select length(Value) - length(replace(Value, ',', '')) as NumberOfComma from DemoTable1510;

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

+---------------+
| NumberOfComma |
+---------------+
|             1 |
|             2 |
|             3 |
+---------------+
3 rows in set (0.00 sec)

동작 원리 정리

length(Value)는 원본 문자열의 길이를 반환하고, length(replace(Value, ',', ''))는 쉼표가 모두 제거된 문자열의 길이를 반환합니다. 두 값의 차이가 바로 해당 문자열에 포함된 쉼표의 개수입니다. 이 기법은 쉼표뿐만 아니라 특정 문자나 부분 문자열이 문자열 안에 몇 번 등장하는지 세는 데에도 널리 활용할 수 있으므로, 실무에서 유용하게 응용해 보시기 바랍니다.