메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
MySQL의 문자열 함수는 텍스트를 나누고, 합치고, 검색하고, 서식을 지정하고, 비교하는 작업을 다룹니다. 대부분은 같은 규칙을 따릅니다: 1부터 시작하는 인덱스, NULL 전파(인수 중 하나라도 NULL이면 NULL을 반환), 그리고 기본적으로 대소문자를 구분하지 않는 비교입니다.

결합과 분리

CONCAT — 문자열을 이어 붙입니다:
CONCAT은 인수에 NULL이 있으면 NULL을 반환합니다. CONCAT_WS는 NULL 값을 건너뛰지만, NULL이 아닌 값 사이의 구분자는 유지합니다. SUBSTRING / SUBSTR / MID — 문자열의 일부를 추출합니다:
SUBSTRING_INDEX — 구분자를 기준으로 나눕니다:

문자열 안에서 검색하기

LOCATE / POSITION / INSTR — 부분 문자열을 찾습니다:
LIKE — 와일드카드를 사용한 패턴 일치:
REGEXP / RLIKE — 정규 표현식 일치:
REGEXP는 POSIX 정규식 구문을 사용합니다. 함수 형태가 필요하면 REGEXP_LIKE()(MySQL 8.0 이상)를 사용하세요.

문자열 수정하기

REPLACE — 부분 문자열의 모든 출현을 바꿉니다:
TRIM / LTRIM / RTRIM — 공백이나 특정 문자를 제거합니다:
UPPER / LOWER — 대소문자를 바꿉니다:
LPAD / RPAD — 고정 길이로 채웁니다:
REPEAT — 문자열을 N번 반복합니다:
REVERSE — 문자열을 뒤집습니다:

길이와 비교

MySQL에는 멀티바이트 문자에 대해 다른 결과를 내는 2개의 길이 함수가 있습니다:
바이트가 아니라 문자 수가 중요할 때는 항상 CHAR_LENGTH를 사용하세요. STRCMP — 두 문자열을 비교하고 -1, 0, 또는 1을 반환합니다:

서식 지정

FORMAT — 숫자에 천 단위 구분 기호를 넣어 서식을 지정합니다:
LEFT / RIGHT — 시작이나 끝에서 N개의 문자를 가져옵니다:

흔한 패턴

이메일 주소에서 도메인 추출하기:
표시용으로 긴 문자열 자르기:
공백 정규화하기:

자주 묻는 질문

MySQL 문자열 비교는 대소문자를 구분하나요?

기본적으로는 구분하지 않습니다. 문자열 비교는 열의 콜레이션을 사용하며, 가장 흔한 콜레이션은 대소문자를 구분하지 않습니다(예: utf8mb4_general_ci, 여기서 ci는 case-insensitive를 뜻합니다). 대소문자를 구분하는 비교가 필요하면 _cs 콜레이션이나 BINARY 연산자를 사용하세요:

CHAR_LENGTH와 LENGTH의 차이는 무엇인가요?

LENGTH는 바이트 수를 반환하고, CHAR_LENGTH는 문자 수를 반환합니다. ASCII 문자열에서는 둘이 같습니다. 멀티바이트 문자(악센트가 붙은 글자, 이모지, CJK)가 있는 UTF-8 문자열에서는 다릅니다. 사용자에게 보이는 문자열 길이 제한에는 CHAR_LENGTH를 사용하세요.

문제 해결

함께 보기