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

MySQL LEFT() 함수로 전화번호에서 지역번호 추출하는 방법

전화번호 목록이 저장된 테이블에서 지역번호(area code)만 따로 추출해야 하는 경우가 종종 있습니다. 지역번호란 예를 들어 전화번호 맨 앞에 위치한 몇 자리 숫자를 의미하며, MySQL에서는 LEFT() 함수를 사용하면 간단하게 추출할 수 있습니다.

1. 테이블 생성하기

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

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

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 전화번호 형식의 데이터를 입력합니다.

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

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

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

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

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

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

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

mysql> select *from DemoTable;

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

+-------------+
| AreaCodes |
+-------------+
| 90387568976 |
| 90389097878 |
| 56789008799 |
| 45679008571 |
| 45679008536 |
+-------------+
5 rows in set (0.00 sec)

4. LEFT() 함수로 지역번호 추출하기

이제 LEFT() 함수와 DISTINCT 키워드를 조합하여 중복 없이 고유한 지역번호만 추출하는 쿼리를 작성합니다. LEFT(컬럼명, N) 형태로 작성하면 문자열의 왼쪽에서 N개의 문자를 반환합니다.

mysql> select distinct LEFT(AreaCodes,4) from DemoTable;

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

+-------------------+
| left(AreaCodes,4) |
+-------------------+
| 9038 |
| 5678 |
| 4567 |
+-------------------+
3 rows in set (0.13 sec)

정리

MySQL의 LEFT() 함수를 사용하면 별도의 복잡한 처리 없이 전화번호 문자열에서 원하는 자릿수만큼 잘라내어 지역번호를 손쉽게 얻을 수 있습니다. 여기에 DISTINCT를 함께 사용하면 중복을 제거한 고유한 지역번호 목록까지 한 번의 쿼리로 확인할 수 있습니다. 필요에 따라 두 번째 인수 값을 조절해 3자리, 4자리 등 원하는 길이의 지역번호를 유연하게 추출할 수 있다는 점도 기억해 두면 좋습니다.