작성: Corn/sec, ChatGPT, 편집: Corn/sec
SQL에서 정규 표현식(Regular Expressions, Regex)은 문자열 패턴을 검색하고 필터링하는 강력한 도구입니다.
MySQL, PostgreSQL 등 여러 DBMS에서 REGEXP 또는 ~ 연산자를 사용하여 정규 표현식을 활용할 수 있습니다.
| . | 임의의 한 문자 | 'c.t' → 'cat', 'cut' (일치) |
| ^ | 문자열의 시작 | '^A' → 'Apple' (일치), 'Banana' (불일치) |
| $ | 문자열의 끝 | 'dog$' → 'big dog' (일치), 'dog park' (불일치) |
| * | 0개 이상 반복 | 'ba*n' → 'bn', 'ban', 'baaan' (일치) |
| + | 1개 이상 반복 | 'ba+n' → 'ban', 'baaan' (일치), 'bn' (불일치) |
| {n,m} | 최소 n번, 최대 m번 반복 | 'a{2,4}' → 'aa', 'aaa', 'aaaa' (일치), 'a', 'aaaaa' (불일치) |
| [abc] | a, b, c 중 하나 | 'gr[ae]y' → 'gray', 'grey' (일치) |
| [^abc] | a, b, c 제외 | '[^0-9]' → 숫자가 아닌 모든 문자 |
| [0-9] | 숫자 (0~9) | '\d'과 동일 |
| [a-zA-Z] | 영문자 | '^[A-Z]' → 'Apple' (일치), 'banana' (불일치) |
| \w | 영숫자 및 _ | '\w+' → 'hello', 'user_123' (일치) |
| \s | 공백 문자 | '\s+' → 'hello world' (공백 포함 검색) |
| ^ | 문자열의 시작 | '^Hello' → 'Hello World' (일치) |
| $ | 문자열의 끝 | 'end$' → 'The end' (일치) |
| \b | 단어 경계 | '\bcat\b' → 'the cat' (일치), 'catch' (불일치) |
SELECT * FROM users WHERE name REGEXP '^J';
SELECT * FROM customers WHERE email REGEXP 'gmail\.com$';
SELECT * FROM employees WHERE phone REGEXP '^[0-9]{3}-[0-9]{4}-[0-9]{4}$';
SELECT * FROM users WHERE username ~ 'admin';
SELECT * FROM products WHERE product_code ~ '[0-9]{4}$';
SELECT * FROM promotions WHERE description ~* 'discount';
SELECT * FROM members WHERE phone REGEXP '^010-[0-9]{4}-[0-9]{4}$';
SELECT * FROM users WHERE email REGEXP 'naver\.com|daum\.net$';
SELECT * FROM products WHERE product_code REGEXP '^A[0-9]{4}$';
SELECT * FROM products WHERE description REGEXP 'sale|discount|off';
| DBMS | 정규 표현식 지원 여부 | 주요 연산자 |
| MySQL | O | REGEXP, RLIKE |
| PostgreSQL | O | ~, ~*, !~, !~* |
| Oracle | O | REGEXP_LIKE() |
| SQL Server | X | 지원 안 함 |
MySQL과 PostgreSQL은 기본적으로 정규 표현식을 지원하지만, SQL Server에서는 기본적으로 사용할 수 없습니다.
SQL 정규 표현식은 데이터 검색과 필터링을 더 정교하게 수행할 수 있도록 도와줍니다.
특히 REGEXP(MySQL), ~(PostgreSQL) 등의 연산자를 활용하면 특정 패턴을 가진 데이터를 쉽게 찾을 수 있습니다.
| [MySQL] 날짜 및 시간 관련 함수 (0) | 2025.03.04 |
|---|