반응형
정규표현식이란
특정 규칙을 가진 문자열의 집합을 표현하는 형식언어이다.
문자열이 가진 규칙을 파악하여 해당 규칙을 만족하는 문자열만 추출할 수 있다.
검색, 필터링, 치환 등에 사용된다.
mySQL에서는 REGEXP(Regular Expression)이라는 키워드로 정규표현식을 사용함.
REGEXP
SELECT 컬럼명
FROM 테이블명 WHERE 컬럼명 REGEXP '정규표현식';
정규표현식 기본 문법(일부)
^ : 문자열의 시작
$ : 문자열의 끝
[aeiou] : aeiou 중 하나
^[aeiou] : aeiou중 하나로 시작하는 문자
^[aeiou].* : aeiou중 하나로 시작하는 문자열
[aeiou]$ : aeiou중 하나로 끝나는 문자
.*[aeiou]$ : aeiou중 하나로 끝나는 문자열
[a-z]: a-z까지의 모든 문자
[^aeiou] : ^가 []안의 문자열 앞에 존재할때는 부정을 의미. 즉, aeiou가 아닌.
예제문제 )
Q. Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels. Your result cannot contain duplicates.
> 도시의 끝이름이 aeiou 모음으로 시작하지 않거나, 끝나지 않는 데이터. 중복 불가.
풀이)
SELECT DISTINCT city
FROM station
WHERE city REGEXP '^[^aeiou].*' -- 시작하는 문자열이 아니거나
OR city REGEXP '.*[^aeiou]$' -- 끝나는 문자열이 아닐때.
풀이2) 또는 NOT을 사용해주어도 같은 결과가 나옴.
SELECT DISTINCT city
FROM station
WHERE city NOT REGEXP '^[aeiou].*' -- 시작하는 문자열이 아니거나
OR city NOT REGEXP '.*[aeiou]$' -- 끝나는 문자열이 아닐때.
*SQL 정규표현식을 테스트할 수 있는 사이트
반응형
'Back-end > DataBase' 카테고리의 다른 글
[SQL] 테이블 병합 MARGE (0) | 2023.01.10 |
---|---|
[DBMS] Orange 단축키 정리 (0) | 2022.03.02 |
[ORACLE] NVL 함수란? 쿼리 널처리 (3) | 2022.03.02 |
[SQL] WITH 절이란? (0) | 2022.02.04 |
[DB2] WITH UR 이란? (0) | 2021.11.16 |