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

MySQL에서 INT 열 값에 포함된 0의 개수 구하는 방법

MySQL에서 INT 타입으로 선언된 열 값 안에 포함된 숫자 '0'의 개수를 세려면 LENGTH() 함수와 REPLACE() 함수를 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 단계별로 0의 개수를 구하는 방법을 살펴보겠습니다.

1. 테이블 생성하기

먼저 CREATE TABLE 문으로 예제 테이블을 생성합니다.

mysql> create table DemoTable
(
    Value int
);
Query OK, 0 rows affected (1.22 sec)

2. 데이터 삽입하기

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

mysql> insert into DemoTable values(10002000);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(00000);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(400560);
Query OK, 1 row affected (0.19 sec)

참고로 INT 컬럼에는 앞의 0이 저장되지 않으므로, 00000은 실제로는 0으로 저장됩니다.

3. 저장된 데이터 확인하기

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

mysql> select *from DemoTable;

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

+----------+
| Value    |
+----------+
| 10002000 |
|        0 |
|   400560 |
+----------+
3 rows in set (0.00 sec)

4. 0의 개수를 구하는 쿼리

다음은 각 값에 포함된 0의 개수를 구하는 쿼리입니다.

mysql> select (length(Value)-length(replace(Value,'0',''))) AS NumberOfZeros from DemoTable;

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

+---------------+
| NumberOfZeros |
+---------------+
|             6 |
|             1 |
|             3 |
+---------------+
3 rows in set (0.00 sec)

동작 원리

이 방법의 핵심은 REPLACE() 함수입니다. REPLACE(Value, '0', '')는 값에서 모든 '0'을 제거한 문자열을 반환합니다. 따라서 원래 값의 길이에서 0을 제거한 문자열의 길이를 빼면, 그 차이가 곧 제거된 '0'의 개수가 됩니다.

예를 들어 10002000은 총 8자리이며, 0을 모두 제거하면 '12'(2자리)가 남습니다. 따라서 8 - 2 = 6개의 0이 포함되어 있다는 것을 알 수 있습니다. 같은 방식으로 0은 1개, 400560은 3개의 0을 가지게 됩니다.