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

MySQL에서 하이픈 기준으로 열을 분할해 나머지 값만 추출하는 방법

MySQL에서 특정 문자(예: 하이픈 '-'), 이후의 값을 분리하여 추출하려면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 나누고, 원하는 방향(앞에서부터 또는 뒤에서부터)의 값을 반환합니다.

SUBSTRING_INDEX() 기본 문법

SELECT SUBSTRING_INDEX(yourColumnName, '-', -1) AS anyAliasName FROM yourTableName;

여기서 세 번째 인자가 -1이면 구분자를 기준으로 뒤에서부터 첫 번째, 즉 마지막 구분자 오른쪽에 있는 값을 가져옵니다. 반대로 1을 넣으면 앞쪽 값을 반환합니다.

1. 테스트용 테이블 생성

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

mysql> CREATE TABLE DemoTable
   -> (
   -> StreetName TEXT
   -> );
Query OK, 0 rows affected (0.60 sec)

2. 샘플 데이터 삽입

INSERT 문을 사용해 하이픈이 포함된 주소 데이터를 입력합니다.

mysql> INSERT INTO DemoTable VALUES('Paris Hill St.-CA-83745646');
Query OK, 1 row affected (0.32 sec)

mysql> INSERT INTO DemoTable VALUES('502 South Armstrong Street-9948443');
Query OK, 1 row affected (0.20 sec)

3. 저장된 데이터 확인

SELECT 문으로 전체 레코드를 조회합니다.

mysql> SELECT * FROM DemoTable;

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

+------------------------------------+
| StreetName                         |
+------------------------------------+
| Paris Hill St.-CA-83745646         |
| 502 South Armstrong Street-9948443 |
+------------------------------------+
2 rows in set (0.00 sec)

4. 하이픈 이후의 값만 추출하는 쿼리

이제 SUBSTRING_INDEX()를 활용해 하이픈(-) 뒤에 있는 값만 분리해서 가져오는 쿼리입니다.

mysql> SELECT SUBSTRING_INDEX(StreetName, '-', -1) AS Split FROM DemoTable;

실행 결과, 각 행에서 마지막 하이픈 뒤의 숫자 값만 깔끔하게 추출됩니다.

+----------+
| Split    |
+----------+
| 83745646 |
| 9948443  |
+----------+
2 rows in set (0.00 sec)

정리

SUBSTRING_INDEX(컬럼명, '-', -1)은 마지막 하이픈 이후의 문자열을 반환하므로, 주소에서 우편번호나 코드 등 구분자 뒤의 값을 손쉽게 분리할 때 유용합니다. 만약 여러 개의 하이픈이 있어 두 번째 조각까지 필요하다면, SUBSTRING_INDEX를 중첩하거나 인덱스 값을 조절하여 원하는 위치의 데이터를 추출할 수 있습니다.