본문 바로가기

별걸다하는 IT/데이터베이스 Database

[오라클, MySQL] 문자열 자르는 함수 SUBSTR 함수 사용법 - 앞에서 자르기, 뒤에서부터 자르기, 특정 범위만큼 자르기

[데이터베이스 목차 바로가기]

간단한 오라클 문자열 자르는 함수에 대해 알아봅시다. (참고로 MySQL에서는 SUBSTRING입니다!)

 

간단하게 substr은 문자단위로 자를 때 사용하고 substrb는 뒤에 B가 붙죠? 바이트 단위로 자를 때는 SUBSTRB가 됩니다. 근데 저는 업무중에 substr은 진짜 주구장창 쓰는거같은데 substrb는 아직 써본적이 없는듯... (저만그른가요,,?)

암튼 문법은 똑같은데 단순 문자개수냐, 바이트로세냐 차이일뿐이니까 ㅎㅎ  

(MySQL에서는 substrb는 따로 지원하지 않아요) 

 

데이터는 흔한 EMPLOYEES 테이블을 바탕으로 진행하였습니다.

SUBSTR, SUBSTRING

문자열을 특정 위치부터 자르는 함수! substr은 오라클 함수, substring은 MySQL 함수입니다.

 

※ SUBSTR 문법

SUBSTR(자르려는대상문자열, 시작위치(시작위치는1부터 시작), 길이)

0으로 해도 1로 되어서 안되는건 아니지만, 시작위치 기준은 1부터라는거!! 

오라클이나 MySQL이나 문법은 동일해요.

 

쉬우니까 바로 예시 ㄱㄱ

 

■ 맨 처음부터 특정 길이만큼 자르기 

select phone_number "원래문자열", substr(phone_number, 1, 3) "결과"
from EMPLOYEES;

1은 맨 처음을 의미 그 뒤에 3은 길이 = 앞에서부터 3글자 자르기

substr(phone_number, 1, 3)이나 substr(phone_number, 0, 3)이나 동일합니다.

결과이미지

원래 문자열이 515.123.4567이였는데 SUBSTR한 결과 515만 추출된 것을 확인할 수 있어요.

SUBSTR(phone_number, 5, 3) 

→다섯번째 글자부터 3길이만큼 자르기

 

참고로 MySQL은 왼쪽에서부터 특정 길이만큼만 자르고 싶을 경우 해당 기능을 수행하는 Left라는 함수를 지원합니다. 

(오라클은 없으므로 substr로 처리 위 예시처럼 처리~)

 

■ 중간지점부터 끝까지 자르기

끝까지 자르는거면 마지막 길이를 생략하면 돼요.

select phone_number "원래문자열", substr(phone_number, 5) "결과"
from EMPLOYEES;

→ 5번째 길이부터 끝까지 (즉 맨 뒤에 인자 생략)

■ 뒤에서부터 파싱하고 싶으면?

1,2,3....이게 첫번째 두번째 세번째... 였다면 -1은 뒤에서 첫번째, -2는 뒤에서 두 번째, -3은 뒤에서 3번째 이렇게 생각하시면 됩니다.

select phone_number "원래문자열", substr(phone_number, -8, 3) "결과"
from EMPLOYEES;

뒤에 8번째 문자부터 3길이만큼만 잘라서 보여줘!

SUBSTR(phone_number, -4)

 뒤에 4번째부터 끝까지 자르기

 

참고로 MySQL은 오른쪽에서부터 특정 길이만큼만 자르고 싶을 경우 해당 기능을 수행하는 Right라는 함수를 지원합니다. (오라클은 없으므로 substr로 처리 위 예시처럼 처리~)

 

SQL은 포스팅이 느므 간단해서 좋은거같아요 ㅎㅎ

오늘은 여기까지입니다 :0 도움이되셨다면 공감됴아요