IT Log

[Presto] REGEXP Functions 본문

SQL/Presto

[Presto] REGEXP Functions

newly0513 2021. 4. 7. 17:09
728x90
반응형

※ presto 정규표현식은 몇가지 경우를 제외하고 Java 패턴 구문을 사용

java pattern : docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html


REGEXP_EXTRACT_ALL

  • 사용법 : 
    1. REGEXP_EXTRACT_ALL(string, pattern)
    2. 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

  • 사용법 : 
    1. REGEXP_EXTRACT(string, pattern)
    2. 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

  • 사용법 :
    1. REGEXP_REPLACE(string, pattern)
    2. REGEXP_REPLCAE(string, pattern, replacement)
    3. 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