홈 › SQL 고급 › 09 / 10

정규식 함수

REGEXP_LIKE, REGEXP_SUBSTR, REGEXP_REPLACE, REGEXP_INSTR
섹션 6진행 0 / 10

6. 정리

정규식 함수는 REGEXP_LIKE(검증), REGEXP_SUBSTR(추출), REGEXP_INSTR(위치), REGEXP_REPLACE(치환) 네 개입니다. LIKE 로 못 하는 "숫자 네 자리", "둘 중 하나" 같은 조건을 패턴으로 적습니다.

Oracle 은 10g 부터 네 함수를 지원하고 REGEXP_COUNT 는 11g 부터이며 Tibero 도 지원합니다. Oracle 정규식은 POSIX ERE 기반에 \d·\w 약어가 있지만 전방 탐색은 없습니다.

MySQL 은 오래된 REGEXP·RLIKE 연산자에 더해 8.0 부터 함수 네 개를 지원하고 REGEXP_COUNT 는 없습니다. MSSQL 은 2022 이하에 정규식 함수가 없어 LIKE 의 [ ] 와 PATINDEX 로 대신합니다.

형식 검증은 ^ ... $ 로 감싸고, NOT REGEXP_LIKE 는 NULL 을 놓치며, 자동 정규화는 오류를 감춥니다. 역참조는 Oracle \1, MySQL $1 이고 빈 문자열은 Oracle 에서 NULL 이 됩니다.

정규식 조건은 일반 인덱스를 쓰지 못해 대량 테이블에서는 느립니다. 함수 기반 인덱스나 정제한 컬럼을 권장합니다.

다음 레슨은 다중 테이블 UPDATE·DELETE 와 INSERT ALL 입니다. 문자 함수의 기본은 중급 07 문자·날짜 함수, 인덱스는 중급 09 인덱스를 참고하세요.