728x90
1. 문자 관련 패턴
패턴 | 기능 | 예시 | 설명 |
. | .의 수는 문자의 수를 의미한다. | .. | 문자 두개를 찾는다. |
| | 문자열을 구분해준다. | 대한|사람 | “대한”과 “사람”을 찾는다. |
[ ] | [ ]안에 있는 데이터 값을 찾는다. | [0-3]82 | “082”,“182”,“382” 값을 찾는다. |
( ) | ( )안에 있는 문자열 묶음을 찾는다. | (만세) | 한 단어인 “만세”를 찾는다. |
% | 와일드 카드. 일치하는 문자를 찾는다. | %점수 | “영어점수”,“한국사점수”,“컴활점수”를 출력 |
2. 예제
SELECT location FROM cafe WHERE REGEXP_LIKE(location,'지점');
location 컬럼에서 ‘지점’이 들어간 데이터를 모두 출력한다.
▶데이터 중 00지점 혹은 000지점 혹은 0000지점 형태의 문자열인 값을 출력 때
SELECT location FROM cafe WHERE REGEXP_LIKE (location,'^(..(지점)|...(지점)|....(지점))$');
지점 앞의 글자수를 아는 경우에는 문자수를 지정해서 해당 값이 아닌 값을 오류값으로 출력하면된다.
SELECT location FROM cafe WHERE REGEXP_LIKE (location,'^((..|...|....)(지점))$');
위의 조건식에서 중복되는 단어를 최소화해서 더 정갈하게 하면 이렇게 된다.
SELECT location FROM cafe WHERE NOT REGEXP_LIKE (location,'^지점+$');
지점 앞의 글자수를 모를 경우, ‘지점’이라는 단어만 들어가면 정상값으로 보고 출력할 경우
SELECT 컬럼명 FROM 테이블명 WHERE NOT REGEXP_LIKE(컬럼명, 조건식);
데이터 중 00지점 혹은 000지점 혹은 0000지점 형태의 문자열인 값을 출력이 아닌 값을 오류 값으로 출력할 때는 정규식 앞에 NOT을 붙이면 된다.
SELECT
COUNT컬럼명
FROM DB Owner이름.파일명
WHERE 컬럼명 like '%지점'
;
그러나 00지점 혹은 000지점 혹은 0000지점 형태처럼 데이터 형식이 분명하게 정해져있다고 보기 힘든 문자열의 경우, 정규식보다는 일반 함수를 사용하는게 더 나을 수도 있다. 위 식은 해당 컬럼에 ‘지점’이라는 단어가 몇 번 포함되어있는지 카운팅하는 구문이다. %를 사용해 ‘지점’으로 끝나는 단어를 찾는다.
그리고 SQL구문이 이상하다 싶으면 REGEXPER에서 확인하면 된다. 문제점을 금방 발견할 수 있다.
와, 오늘 진짜 열심히 공부했다.
3. 참고사이트
728x90
'Database > SQL' 카테고리의 다른 글
SQL 정규 표현식(Regular Expression) - 문자 데이터(영어) (0) | 2021.10.21 |
---|---|
SQL 정규 표현식(Regular Expression) - 문자 데이터(한글 여부값) (0) | 2021.10.20 |
SQL 정규 표현식(Regular Expression) - 문자 데이터(숫자) (0) | 2021.10.18 |
SQL 정규 표현식(Regular Expression) - 문자열 데이터( . ) (0) | 2021.10.15 |
SQL 정규 표현식(Regular Expression) - 기본 기호 (0) | 2021.10.14 |