IT Log
[Presto] REGEXP Functions 본문
728x90
반응형
※ presto 정규표현식은 몇가지 경우를 제외하고 Java 패턴 구문을 사용
java pattern : docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
REGEXP_EXTRACT_ALL
- 사용법 :
- REGEXP_EXTRACT_ALL(string, pattern)
- REGEXP_EXTRACT_ALL(string, pattern, group)
- 결과는 ARRAY Type으로 반환되며, ARRAY에 포함되는 값은 VARCHAR로 반환
SELECT REGEXP_EXTRACT_ALL('1a 2b 14m', '(\d+)([a-z]+)', 2) -- 2번째 그룹인 영어 소문자만 추출
-- [a, b, m]
SELECT REGEXP_EXTRACT_ALL('1a 2b 14m', '\d+') -- 숫자만 추출
-- [1, 2, 14]
REGEXP_EXTRACT
- 사용법 :
- REGEXP_EXTRACT(string, pattern)
- REGEXP_EXTRACT(string, pattern, group)
- REGEXP_EXTRACT은 REGEXP_EXTRACT_ALL과 달리 첫 번째 pattern만 반환
SELECT REGEXP_EXTRACT('1a 2b 14m', '(\d+)([a-z]+)', 2) -- 2번째 그룹인 영어 소문자만 추출
-- a
SELECT REGEXP_EXTRACT('1a 2b 14m', '\d+') -- 숫자만 추출
-- 1
REGEXP_LIKE
- 사용법 : REGEXP_LIKE(string, pattern)
- 결과는 BOOLEAN값으로 반환
SELECT REGEXP_LIKE('1a 2b 14m', '\d+b'); -- 1개이상 숫자다음 b가 오는 경우
-- true (2b가 있으므로)
SELECT REGEXP_LIKE('1a 23456b 14m', '\d+b'); -- 1개이상 숫자다음 b가 오는 경우
-- true (23456b가 있으므로)
SELECT REGEXP_LIKE('1a 2 14m', '\d+b') ; -- 1개이상 숫자다음 b가 오는 경우
-- false (해당 pattern이 없으므로)
REGEXP_REPLACE
- 사용법 :
- REGEXP_REPLACE(string, pattern)
- REGEXP_REPLCAE(string, pattern, replacement)
- REGEXP_REPLACE(string, pattern, function)
SELECT REGEXP_REPLACE('1a 2b 14m', '\d+[ab]'); -- 1개 이상의 숫자뒤 a나 b가 오면 삭제
-- 14m
SELECT REGEXP_REPLACE('1a 2b 14m', '\d+[ab]', 'A'); -- 1개 이상의 숫자뒤 a나 b가 오면 A로 치환
-- A A 14m
SELECT REGEXP_REPLACE('1a 2b 14m', '(\d+)([ab])', 'aa$2'); -- 1개 이상의 숫자뒤 a나 b가 오면
-- aaa aab 14m
SELECT REGEXP_REPLACE('new york', '(\w)(\w*)', x -> upper(x[1]) || lower(x[2]));
-- New York
REGEXP_SPLIT
- 사용법 : REGEXP_SPLIT(string, pattern)
- 결과는 ARRAY Type으로 반환되며, ARRAY에 포함되는 값은 VARCHAR로 반환
SELECT REGEXP_SPLIT('1a 2b 14m', '\s*[a-z]+\s*') ;
-- [1, 2, 14, ]
참조 URL : prestodb.io/docs/current/functions/regexp.html
728x90
반응형
'SQL > Presto' 카테고리의 다른 글
[Presto] DATE_ADD, DATE_DIFF (0) | 2021.04.07 |
---|---|
[Presto] Data type (0) | 2021.04.07 |
Comments