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

MySQL SUBSTRING_INDEX() 함수로 구분자 기준 문자열 왼쪽 부분 추출하기

MySQL에서 문자열의 왼쪽 부분 분할하기

MySQL에서는 SUBSTRING_INDEX() 함수를 사용하면 지정한 구분자를 기준으로 문자열의 왼쪽 부분을 간단하게 추출할 수 있습니다. 이 함수는 특정 구분 기호가 나타나기 전까지의 문자열을 반환해 주기 때문에, '=='처럼 특수 문자로 구분된 데이터를 처리할 때 매우 유용합니다.

기본 문법

SUBSTRING_INDEX() 함수의 기본적인 사용 문법은 다음과 같습니다.

SELECT
yourColumnName1, .....N,
SUBSTRING_INDEX(yourColumnName, 'yourSeperatorSymbol', 1)
as anyVariableName from yourTableName;

여기서 세 번째 인자로 전달하는 값 1은 구분자를 기준으로 문자열의 왼쪽(앞쪽) 부분을 가져오겠다는 의미입니다. 만약 오른쪽 부분이 필요하다면 이 값을 -1로 변경하면 됩니다.

예제 테이블 생성

위 문법을 실제로 확인해 보기 위해 먼저 테스트용 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table LeftStringDemo
-> (
-> Id int,
-> Words varchar(100)
-> );
Query OK, 0 rows affected (0.92 sec)

샘플 데이터 삽입

이제 insert 명령문을 사용하여 테이블에 몇 개의 레코드를 추가합니다. 모든 샘플 데이터는 '==' 구분자를 포함하고 있습니다.

mysql> insert into LeftStringDemo values(1,'MySQL==6789');
Query OK, 1 row affected (0.19 sec)

mysql> insert into LeftStringDemo values(2,'Java==Object Oriented');
Query OK, 1 row affected (0.21 sec)

mysql> insert into LeftStringDemo values(3,'C Language==Procedural Programming');
Query OK, 1 row affected (0.18 sec)

mysql> insert into LeftStringDemo values(4,'PL/SQL==Structured Programming');
Query OK, 1 row affected (0.16 sec)

저장된 전체 데이터 조회

select 문을 사용하여 테이블에 저장된 모든 레코드를 확인해 보겠습니다.

mysql> select *from LeftStringDemo;

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

+------+------------------------------------+
| Id | Words |
+------+------------------------------------+
| 1 | MySQL==6789 |
| 2 | Java==Object Oriented |
| 3 | C Language==Procedural Programming |
| 4 | PL/SQL==Structured Programming |
+------+------------------------------------+
4 rows in set (0.00 sec)

구분자 '==' 기준으로 왼쪽 부분 추출하기

이제 핵심 단계입니다. 아래 쿼리는 'Words' 컬럼의 값을 구분자 '=='를 기준으로 분할하여 왼쪽 부분만 가져옵니다.

mysql> select Id, substring_index(Words, '==', 1) as OnlyLefthandsideValue from
LeftStringDemo;

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

+------+-----------------------+
| Id | OnlyLefthandsideValue |
+------+-----------------------+
| 1 | MySQL |
| 2 | Java |
| 3 | C Language |
| 4 | PL/SQL |
+------+-----------------------+
4 rows in set (0.00 sec)

결과를 보면 '=='' 앞에 있던 값들, 즉 'MySQL', 'Java', 'C Language', 'PL/SQL'만 깔끔하게 추출된 것을 확인할 수 있습니다. 이처럼 SUBSTRING_INDEX() 함수를 활용하면 별도의 복잡한 문자열 처리 없이도 원하는 위치의 문자열을 손쉽게 분리할 수 있습니다.