JJUNNAK's

[ MySQL ] 문자열 슬라이싱(자르기) 본문

DB/MySQL

[ MySQL ] 문자열 슬라이싱(자르기)

최낙준 2023. 1. 21. 01:05

MySQL 문자열 슬라이싱 


MySQL에서도 다른 프로그래밍 언어와 같이 문자열을 슬라이싱 할 수있는 네가지 기능이 있다.

 

1. Left
2. Right
3. Substring
4. Substring_Index

 

아래 학생 테이블에서 학번(STU_NUM) 을 슬라이싱 해볼것이다.

학생 테이블

 

 

먼저 한가지 알아야 할것은 MySQL에서는 인덱스(index)가 다른 프로그래밍 언어와는 다르게

0이아닌 1부터 시작이다.

 J   J   U   N   N   A   K
[1] [2] [3] [4] [5] [6] [7] <- good! ^o^ 

[0] [1] [2] [3] [4] [5] [6] <- no!! ㅠㅠ

 

1. Left

Left 는  문자열의 왼쪽부터 원하는 길이 만큼을 자른다.

select left(컬럼명, 원하는길이) from 테이블;

 

select left(STU_NUM, 3) from student; 를 수행하면 다음과 같이 3개의 숫자가 잘려져 나온다.

 

select left(STU_NUM, 3) from student; 결과

 

 

 

 

2. Right

Right  또한 Left 와 같은 로직으로 문자열의 오른쪽 부터 원하는 길이만큼을 자른다.

select right(컬럼명, 원하는길이) from 테이블;

 

select right(STD_NUM, 3) from student; 를 수행하면 다음과 같은 결과가 도출된다.

 

select right(STD_NUM, 3) from student; 결과

 

 

 

 

3. Substring

 

Substring은 내가 원하는 위치부터 + 원하는 길이까지 자를 수 있다.

select substring("문자열", 시작위치);
select substring("문자열",시작위치,길이);

 

시작위치만 설정한 경우 [ substring("문자열", 시작위치); ]

select substring("JJUNNAK",3);

결과 : UNNAK

 

길이까지 설정한 경우 [ substring("문자열",시작위치,길이); ]

select substring("JJUNNAK",1,3);

결과: JJU

 

실제 사용 예시

select substring((쿼리문), 시작위치, 길이);


-- student 테이블에서 짱구의 학번을 1부터 2까지 자름.
select substring((select STD_NUM from student where STD_NAME='짱구'),1,2);

결과 : 20

 

 

 

4. Substring_index

Substirng_index 는 내가 설정한 구분자를 기준으로 자를 수 있다.

 

select substring_index("문자열", "구분자", 구분자의순서);

 

예를 들어 JJ#UNN#AK 라는 문자열이 있다고 가정을 했을때

내가 사용할 구분자인 #은 총 2개가 포함되어 있다.

첫번째  # 까지는 JJ

두번쨰 # 까지는 JJ#UNN 이 존재하고 있다.

 

select substring_index("JJ#UNN#AK", "#", 1);

결과 : JJ


select substring_index("JJ#UNN#AK", "#", 2);

결과 : JJ#UNN

 

 위와 같이 구분자가 여러개 존재하는경우

구분자의 순서(index)를 입력할 때 양수는 좌측부터,  음수일 경우에는 우측부터

구분자의 카운트가 시작된다. 

 

select substring_index("JJ#UNN#AK", "#", -1);

결과 : AK

select substring_index("JJ#UNN#AK", "#", -2);

결과 : UNN#AK

 

 

 

Comments