[MYSQL] 문자열 추출 : SUBSTR, SUBSTRING

2023. 4. 21. 18:38개발공부 기강잡자/SQL

 

문자열 컬럼에서 원하는 길이로 문자열을 추출하는 함수

SUBSTR, SUBSTRING - 동일한 함수라 둘 중 아무거나 사용해도 된다.

 

SUBSTR(str, pos), SUBSTR(str FROM pos)
, SUBSTRING(str, pos), SUBSTRING(str FROM pos)

: 문자열 strpos부터 끝까지의 문자열을 리턴한다.

 

pos는 1부터 시작한다.

SELECT SUBSTR('Hello', 1)
SELECT SUBSTR('Hello' FROM 1)
SELECT SUBSTRING('Hello', 1)
SELECT SUBSTRING('Hello' FROM 1)

결과 : 'Hello' → 문자열 'Hello'의 1번째부터 끝까지 추출

pos가 0이면 공백 문자열을 리턴한다.

SELECT SUBSTR('Hello', 0)
SELECT SUBSTR('Hello' FROM 0)
SELECT SUBSTRING('Hello', 0)
SELECT SUBSTRING('Hello' FROM 0)

결과 : ''

 

pos가 음수면 문자열의 끝에서 부터 인덱스를 센다.

SELECT SUBSTR('Hello', -3)
SELECT SUBSTR('Hello' FROM -3)
SELECT SUBSTRING('Hello', -3)
SELECT SUBSTRING('Hello' FROM -3)

결과 : 'llo' → 문자열 'Hello'의 뒤에서 3번째부터 끝까지 추출
✔️ -3 : 문자열의 오른쪽부터 3번째 인덱스

 

SUBSTR(str, pos, len), SUBSTR(str FROM pos FOR len)
, SUBSTRING(str, pos, len), SUBSTRING(str FROM pos FOR len)

: 문자열 strpos의 위치에서 len 길이 만큼 추출

SELECT SUBSTR('Hello', 2, 2)
SELECT SUBSTR('Hello' FROM 2 FOR 2)
SELECT SUBSTRING('Hello', 2, 2)
SELECT SUBSTRING('Hello' FROM 2 FOR 2)

결과 : 'el' → 문자열 'Hello' 2번째 문자부터 2개의 문자 추출

 

SELECT SUBSTR('Hello', -2, 2)
SELECT SUBSTR('Hello' FROM -2 FOR 2)
SELECT SUBSTRING('Hello', -2, 2)
SELECT SUBSTRING('Hello' FROM -2 FOR 2)

결과 : 'lo' → 문자열 'Hello' 뒤에서 2번째 문자부터 2개의 문자 추출

 


참고 : https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substr

 

MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators

12.8 String Functions and Operators Table 12.12 String Functions and Operators Name Description ASCII() Return numeric value of left-most character BIN() Return a string containing binary representation of a number BIT_LENGTH() Return length of argument

dev.mysql.com