MySQL SUBSTRING() 함수란?
MySQL에서는 SUBSTRING() 함수를 사용하여 문자열에서 원하는 부분 문자열(substring)을 손쉽게 추출할 수 있습니다. 이 함수는 지정한 위치부터 시작하여 주어진 길이만큼의 부분 문자열을 반환하며, 다음과 같은 네 가지 형태로 사용할 수 있습니다.
- SUBSTRING(str, pos)
- SUBSTRING(str FROM pos)
- SUBSTRING(str, pos, len)
- SUBSTRING(str FROM pos FOR len)
각 형태의 동작 방식
길이(len) 인수가 없는 형태는 문자열 str의 pos 위치부터 끝까지의 부분 문자열을 반환합니다. 반면 길이(len) 인수가 있는 형태는 pos 위치부터 시작하여 len 길이만큼의 문자를 반환합니다.
FROM 키워드를 사용하는 형태는 표준 SQL 문법에 해당합니다. 또한 pos 인수에는 음수 값을 사용할 수 있으며, 이 경우 부분 문자열의 시작점이 문자열의 앞이 아닌 끝에서부터 계산됩니다. 음수 값은 어떤 형태에서든 사용 가능합니다.
사용 예제
mysql> SELECT SUBSTRING('Quadratically',5);
+---------------------------------------------------------+
| SUBSTRING('Quadratically',5) |
+---------------------------------------------------------+
| ratically |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
+---------------------------------------------------------+
| SUBSTRING('foobarbar' FROM 4) |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('Quadratically',5,6);
+---------------------------------------------------------+
| SUBSTRING('Quadratically',5,6) |
+---------------------------------------------------------+
| ratica |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('foobarbar',-4);
+---------------------------+
| SUBSTRING('foobarbar',-4) |
+---------------------------+
| rbar |
+---------------------------+
1 row in set (0.05 sec)위 예제를 살펴보면, 첫 번째 쿼리는 5번째 위치부터 문자열 끝까지를 반환하고, 두 번째 쿼리는 FROM 키워드를 사용해 4번째 위치부터 추출합니다. 세 번째 쿼리는 5번째 위치부터 6글자만 추출하며, 마지막 쿼리처럼 음수 위치(-4)를 지정하면 문자열 끝에서 4번째 문자부터 끝까지 반환됩니다.
MID(), SUBSTR() 함수
SUBSTRING() 외에도 MID()와 SUBSTR() 함수를 사용해 부분 문자열을 추출할 수 있습니다. 이 두 함수는 모두 SUBSTRING()의 동의어(synonym)로, 완전히 동일한 방식으로 작동합니다.