1️⃣ 정규표현식
정규표현식이란?
: 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어
- 문자열을 처리하는 방법 중 하나로, 특정한 조건의 문자를 검색하거나 치환하는 과정을 매우 간편하게 처리할 수 있다.
매칭
패턴 | 기능 | 사용 예시 | 설명 |
---|
. | 문자 하나 | "..." | 문자열의 길이가 세 글자 이상인 것을 찾는다 |
⎮ | 또는 (OR) | "가나다⎮라마바" | '가나다' 또는 '라마바'에 해당하는 문자열을 찾는다 |
[] | [] 안에 나열된 패턴에 해당하는 문자열을 찾는다 | "[123]d" | 대상 문자열에서 '1d' 또는 '2d' 또는 '3d'인 문자열을 찾는다 |
^ | 시작하는 문자열을 찾는다 | "^시작" | 대상 문자열에서 '시작'으로 시작하는 문자열을 찾는다 |
$ | 끝나는 문자열을 찾는다 | "끝$" | 대상 문자열에서 '끝'으로 끝나는 문자열을 찾는다 |
횟수
패턴 | 기능 | 사용 예시 | 설명 |
---|
* | 0회 이상 나타나는 문자 | "a*" | 'a'가 0번 이상 등장하는 문자열을 찾는다 ex) a, aa, b |
+ | 1회 이상 나타나는 문자 | "찌개+" | '찌개'가 1번 이상 등장하는 문자열을 찾는다 ex) 김치찌개, 된장찌개, 부대찌개 |
{m, n} | m회 이상 n회 이하 나타나는 문자 | "치{1,2}" | '치'가 1회 이상 2회 이하 등장하는 문자열을 찾는다 ex) 치커리, 치카치카 |
? | 0~1회 이상 나타나는 문자 | [가나다]? | '가' 또는 '나' 또는 '다'가 0~1회 등장하는 문자열을 찾는다 ex) 가지마, 나라, 안녕 |
그룹 형태
패턴 | 기능 | 사용 예시 | 설명 |
---|
[A-z], [:alpha:], \a | 알파벳 대문자 또는 소문자인 문자열을 찾는다 | "[A-z]+" | 대상 문자열에서 알파벳이 1개 이상인 문자열을 찾는다 |
[0-9], [:digit:], \d] | 숫자인 문자열을 찾는다 | "^[0-9]+" | 한 개 이상의 숫자로 시작하는 문자열을 찾는다 |
[^문자] | 괄호 안의 문자를 포함하지 않는 문자열을 찾는다 | "[^부정]" | '부' 또는 '정'을 포함하지 않는 문자열을 찾는다 |
예시
select productid, productname, unit
from products
where unit regexp 'boxes|pieces';
select productid, productname, unit
from products
where unit like '%boxes%'
or unit like '%pieces%';
select productid, productname, unit
from products
where unit regexp '[-/\,`~*+!@#$%^()]';
select *
from products
where char_length(productname)=5
and productname regexp 'ch%';
select *
from tbl
where data regexp '^.abc...$';
select *
from tbl
where data regexp '^[0-9]+$';
2️⃣ 문자열 함수
문자열 위치
함수 | 기능 |
---|
FIELD(x, ...) | 여러 개의 문자열 중 찾는 문자열이 있으면 몇 번째인지 반환, 없는 경우 0 반환 |
FIND_IN_SET(x, '...') | 문자열 리스트 중 찾는 문자열의 위치를 찾아 반환, 없는 경우 0 반환 |
INSTR(기존, 부분) | 기존 문자열에서 부분 문자열을 찾아 시작 위치 반환, 없는 경우 0 반환 |
LOCATE(부분, 기존) | INSTR 함수와 동일, 매개변수 순서만 반대 |
SUBSTRING(x, 시작, 길이) | 문자열을 시작 위치부터 길이만큼 잘라 반환 |
SUBSTRING_INDEX(x, 구분자, 위치) | 문자열을 구분자로 나눈 다음 위치 이후, 이전의 문자열을 버림 |
문자열 변환
함수 | 기능 |
---|
CONCAT(x1, x2, ...) | 문자열을 이어서 반환 |
CONCAT_WS(구분자, x1, x2, ...) | 문자열 구분자와 함께 이어서 반환 |
INSERT(기준 문자열, 위치, 길이, 바꿀 문자열) | 기존 문자열에서 위치부터 길이만큼 삭제 후 바꿀 문자열 삽입 |
UCASE(x), UPPER(x) | 소문자 → 대문자 |
LCASE(x), LOWER(x) | 대문자 → 소문자 |
LPAD/RPAD(문자열, 길이, 채울 문자열) | 왼쪽/오른쪽에서부터 해당 길이만큼 늘리고 빈 공간 채울 문자열 반환 |
LTRIM/RTIM(x) | 문자열 왼쪽/오른쪽 공백 제거 |
REPLACE(문자열, 대상, 바꿀 문자열) | 문자열에서 대상을 바꿀 문자열로 반환 |