1. MySQL 문자열 조작 기본
데베이스 관리에서 문자열 조작은 데이터 처리와 쿼리 최적화를 위한 필수 기술입니다. MySQL은 문자열을 추출하고 조작할 수 있는 편리한 함수를 제공합니다. 이 글에서는 중요한 SUBSTRING 함수와 기타 문자열 조작 방법을 살펴보고 실용적인 사용 사례를합니다.
2. MySQL 기본 문자열 추출 – SUBSTRING 함수
MySQL의 SUBSTRING 함수는 문자열의 일부분을 추출 가장 사용되는 함수 중 하나입니다.
SUBSTRING 기본 구문
SUBSTRING(string, start_position, length)
- string : 추출 대상이 되는 문자열.
- start_position : 추출을 시작할 위치(첫 번째 문자는 위치 1).
- length : 추출할 문자 수. 생략하면 시작 위치부터 문자열 끝까지 추출합니다.
예시: 기본 사용법
SELECT SUBSTRING('Hello World', 2, 5);
이 쿼리는 "Hello World"의 두 번째 문자부터 5자를 추출하여 "ello "를 반환합니다.
SUBSTRING에 음수 값 사용하기
시작 위치에 음수를 지정하면 문자열 끝에서부터 카운트한 위치부터 문자를 추출할 수 있습니다.
SELECT SUBSTRING('abcdefg', -3, 2);
이 쿼리는 문자열 끝에서 세 번째와 네 번째 문자인 "ef"를 반환합니다.

3. LEFT와 RIGHT 함수로 문자열 추출
SUBSTRING 대신 LEFT 또는 RIGHT 함수를 사용하여 문자열의 앞이나 뒤에서 지정된 수만큼 문자를 가져올 수 있습니다.
LEFT 함수
LEFT 함수는 문자열의 왼쪽(앞)에서 지정된 수만큼 문자를 추출합니다.
SELECT LEFT('abcdefg', 3);
이 쿼리는 "abc"를 반환합니다.
RIGHT 함수
RIGHT 함수는 문자열의 오른쪽(뒤)에서 지정된 수만큼 문자를 추출합니다.
SELECT RIGHT('abcdefg', 3);
이 쿼리는 "efg"를 반환합니다. 이러한 함수는 문자열 양쪽 중 어느 한쪽에서 항상 고정된 길이의 문자를 추출해야 할 때 특히 유용합니다.
4. SUBSTRING_INDEX 로 문자열 분할
SUBSTRING_INDEX 함수는 지정된 구분자를 기준으로 문자열을 분할하고 특정 부분을 반환합니다. CSV 데이터나 여러 값이 연결된 필드에 특히 유용합니다.
SUBSTRING_INDEX 기본 구문
SUBSTRING_INDEX(string, delimiter, N)
- string : 작업 대상 문자열.
- delimiter : 문자열을 분할하는 데 사용되는 문자(예: 쉼표).
- N : 반환할 부분의 번호. 양수이면 앞에서부터, 음수이면 뒤에서부터 셉니다.
예시: 사용법
SELECT SUBSTRING_INDEX('apple,orange,banana', ',', 2);
이 쿼리는 "apple,orange,banana" 문자열에서 "apple,orange"를 추출합니다.

5. 실무 적용: 데이터베이스 작업에서 문자열 추출
문자열 조작은 실제 데이터베이스 관리에서 매우 유용합니다. 아래는 몇 가지 실용적인 예시입니다.
제품명 일부 추출
다음 쿼리는 제품명 끝이 "Large"인 레코드를 찾습니다.
SELECT * FROM products WHERE SUBSTRING(name, -2, 2) = 'Large';
이렇게 하면 문자열 끝에 특정 조건이 있는 레코드를 추출할 수 있습니다.
계산을 위한 숫자 데이터 추출
숫자 필드의 일부를 추출하여 계산에 활용하는 예시입니다.
SELECT name, price, SUBSTRING(price, -2, 2) * 5 AS total FROM products;
이 쿼리는 제품 가격의 마지막 두 자 추출하고, 이를 5배하여 "total"이라는 별칭으로 결과를 표시합니다.
6. 성능 최적화 팁
문자열 함수는 강력하지만 대용량 데이터베이스에서는 성능에 영향을 줄 수 있습니다 아래는 성능을 향상시키기 위한 몇 가지 팁입니다.
인덱스를 효율적으로 사용하기
문자열의 일부를 검색할 때 적절한 인덱스를 생성하면 쿼리 속도를 크게 향상시킬 수 있습니다. 예를 LIKE 절을 사용할 때 LIKE 'abc%'와 같은 쿼리는 인덱스를 효과적으로 활용할 수 있습니다. 그러나 LIKE '%abc'와 같은 접미사 매치 쿼리는 인덱스를 사용할 수 없으며, 성능이 저하될 수 있습니다.
대규모 데이터셋에서 문자열 연산
대용량 테이블에서 문자열 연산을 자주 수행한다면, 문자열 조작을 애플리케이션 수준에서 처리하는 것을 고려하십시오. 데이터베이스에서 무거운 처리를 애플리케이션으로 오프로드하면 서버 부하를 줄이는 데 도움이 됩니다.
7. 결론
MySQL에서 문자열 조작은 데이터 추출 및 보고를 위한 강력한 도구입니다. SUBSTRING, LEFT, RIGHT와 같은 함수를 숙달하면 필요한 정확한 정보를 손쉽게 추출할 수 있습니다. 성능을 최적화하려면 인덱스를 올바르게 구성하고 효율적인 처리 방식을 설계하는 것이 중요합니다.
이러한 기술을 숙달함으로써 MySQL 문자열 조작 능력을 더욱 향상시킬 수 있습니다. 다음 단계로 정규 표현식 및 기타 고급 문자열 연산에 대해 학습하는 것을 고려해 보세요.


