본문으로 건너뛰기
최종 수정: 에

SUBSTRING

설명​

SUBSTRING 함수는 문자열에서 부분 문자열을 추출하는 데 사용됩니다. 시작 위치와 길이를 지정할 수 있으며, 정방향 및 역방향 추출을 모두 지원합니다. 문자열에서 첫 번째 문자의 위치는 1입니다.

별칭​

SUBSTR

MID

구문​

SUBSTRING(<str>, <pos> [, <len>])

SUBSTRING(<str> FROM <pos> [FOR <len>])

매개변수​

매개변수설명
<str>원본 문자열. 타입: VARCHAR
<pos>시작 위치. 음수도 지정할 수 있습니다. 타입: INT
<len>추출할 길이를 지정하는 선택적 매개변수. 타입: INT

반환 값​

추출한 부분 문자열을 VARCHAR 타입으로 반환합니다.

특수한 경우:

  • 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
  • pos가 0이면 빈 문자열을 반환합니다.
  • pos가 음수이면 문자열 끝에서부터 역방향으로 위치를 셉니다.
  • pos가 문자열 길이를 초과하면 빈 문자열을 반환합니다.
  • len을 지정하지 않으면 pos부터 문자열 끝까지의 모든 문자를 반환합니다.

예제​

  1. 기본 사용법(시작 위치 지정)
SELECT substring('abc1', 2);
+-----------------------------+
| substring('abc1', 2) |
+-----------------------------+
| bc1 |
+-----------------------------+
  1. 음수 위치 사용
SELECT substring('abc1', -2);
+-----------------------------+
| substring('abc1', -2) |
+-----------------------------+
| c1 |
+-----------------------------+
  1. 위치가 0인 경우
SELECT substring('abc1', 0);
+----------------------+
| substring('abc1', 0) |
+----------------------+
| |
+----------------------+
  1. 위치가 문자열 길이를 초과하는 경우
SELECT substring('abc1', 5);
+-----------------------------+
| substring('abc1', 5) |
+-----------------------------+
| |
+-----------------------------+
  1. 길이 매개변수 지정
SELECT substring('abc1def', 2, 2);
+-----------------------------+
| substring('abc1def', 2, 2) |
+-----------------------------+
| bc |
+-----------------------------+
  1. from과 for 사용
SELECT substring('foobarbar' FROM 4 FOR 3);
+-------------------------------------+
| substring('foobarbar' FROM 4 FOR 3) |
+-------------------------------------+
| bar |
+-------------------------------------+
  1. from 사용
SELECT substring('foobarbar' FROM 4);
+-------------------------------+
| substring('foobarbar' FROM 4) |
+-------------------------------+
| barbar |
+-------------------------------+
  1. 별칭 MID를 사용한 NULL 예제
SELECT MID(NULL, 2);
+--------------+
| MID(NULL, 2) |
+--------------+
| NULL |
+--------------+
  1. 별칭 SUBSTR 사용
SELECT SUBSTR('Hello World', 7, 5);
+------------------------------+
| SUBSTR('Hello World', 7, 5) |
+------------------------------+
| World |
+------------------------------+
  1. UTF-8 멀티바이트 문자
SELECT SUBSTRING('ṭṛì ḍḍumai hello', 5, 6);
+--------------------------------------+
| SUBSTRING('ṭṛì ḍḍumai hello', 5, 6) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+
  1. 원본 문자열이 빈 문자열인 경우
SELECT substring('', 1, 3);
+---------------------+
| substring('', 1, 3) |
+---------------------+
| |
+---------------------+
  1. substring에 NULL을 직접 전달하는 경우(별칭 MID를 사용한 경우는 예제 8 참조)
SELECT substring(NULL, 1, 3);
+-----------------------+
| substring(NULL, 1, 3) |
+-----------------------+
| NULL |
+-----------------------+

키워드​

SUBSTRING, SUBSTR, MID