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

MySQL에서 구분자 뒤의 부분 문자열을 반환하는 쿼리 작성법

MySQL에서 문자열 내 특정 구분자(예: 쉼표) 뒤에 있는 값을 추출하고 싶다면 SUBSTRING() 함수와 INSTR() 함수를 함께 사용하면 됩니다. INSTR()로 구분자의 위치를 찾고, SUBSTRING()으로 그 위치 이후의 문자열을 잘라내는 방식입니다. 아래 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
-> (
-> Title text
-> );
Query OK, 0 rows affected (0.56 sec)

2. 데이터 삽입하기

insert 명령을 사용하여 쉼표(,)로 구분된 문자열이 포함된 레코드를 삽입합니다.

mysql> insert into DemoTable values('John is good in MySQL,Sam is good in MongoDB,Mike is good in Java');
Query OK, 1 row affected (0.19 sec)

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 출력을 생성합니다.

+-------------------------------------------------------------------+
| Title |
+-------------------------------------------------------------------+
| John is good in MySQL,Sam is good in MongoDB,Mike is good in Java |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)

4. 구분자 뒤의 부분 문자열 반환하기

다음은 첫 번째 구분자(,) 뒤의 부분 문자열을 반환하는 쿼리입니다.

mysql> select substring(Title, instr(Title, ',') + 1) as AfterDelimiter from DemoTable;

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

+---------------------------------------------+
| AfterDelimiter |
+---------------------------------------------+
| Sam is good in MongoDB,Mike is good in Java |
+---------------------------------------------+
1 row in set (0.03 sec)

쿼리 동작 원리

INSTR(Title, ',')는 Title 컬럼에서 첫 번째 쉼표의 위치를 반환합니다. 여기에 1을 더하면 쉼표 바로 다음 문자의 위치가 되며, SUBSTRING(Title, 위치)는 해당 위치부터 문자열 끝까지의 모든 문자를 반환합니다. 그 결과 첫 번째 쉼표 앞에 있는 "John is good in MySQL"은 제외되고, 나머지 문자열만 별칭 AfterDelimiter로 출력됩니다.

만약 두 번째 구분자 뒤의 문자열이 필요하다면, INSTR()을 중첩하여 두 번째 쉼표의 위치를 찾는 방식으로 응용할 수 있습니다.