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

MySQL에서 하이픈(-) 앞의 문자열만 추출하는 방법: SUBSTRING_INDEX 활용법

MySQL에서 특정 구분자(예: 하이픈 '-') 앞에 있는 문자열만 추출하고 싶다면 SUBSTRING_INDEX() 함수를 활용하면 됩니다. 이 함수는 지정한 구분자가 나타나기 전까지의 문자열을 간단하게 반환해 주기 때문에, 이름과 성이 하이픈으로 연결된 데이터를 분리할 때 특히 유용합니다.

1. 테이블 생성하기

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

mysql> create table DemoTable1857
    (
    Name varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입하기

insert 명령을 사용하여 테이블에 레코드를 입력합니다.

mysql> insert into DemoTable1857 values('John-Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1857 values('Brown-Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1857 values('David-Carol-Miller');
Query OK, 1 row affected (0.00 sec)

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

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

mysql> select * from DemoTable1857;

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

+--------------------+
| Name               |
+--------------------+
| John-Smith         |
| Brown-Chris        |
| David-Carol-Miller |
+--------------------+
3 rows in set (0.00 sec)

4. 하이픈 앞의 문자열 추출 쿼리

다음은 하이픈('-') 앞의 모든 문자를 가져오는 쿼리입니다.

mysql> select substring_index(Name,'-',1) Name from DemoTable1857;

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

+-------+
| Name  |
+-------+
| John  |
| Brown |
| David |
+-------+
3 rows in set (0.00 sec)

SUBSTRING_INDEX 함수 동작 원리

SUBSTRING_INDEX(문자열, 구분자, 위치) 형식으로 사용합니다. 세 번째 인자가 양수이면 왼쪽에서부터 해당 순번의 구분자가 나타나기 전까지의 문자열을 반환하고, 음수이면 오른쪽에서부터 계산합니다. 위 예제에서는 세 번째 인자로 1을 지정했기 때문에 첫 번째 하이픈 앞의 이름 부분만 깔끔하게 추출된 것을 확인할 수 있습니다.