포스팅 목차
* 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
[ REGEXP_COUNT Oracle Function ]
입력한 문자열에서 정규 표현식 패턴을 검색한 후 지정한 패턴의 발생 횟수를 반환한다.
- 함수 설명 :
1. Oracle(오라클)
REGEXP_COUNT() 함수
REGEXP_COUNT 함수는 세 개의 인수를 받습니다. 첫 번째 인수는 검색할 문자열, 두 번째 인수는 검색할 패턴, 세 번째 인수는 검색을 시작할 위치이다. 세 번째 인수는 선택적이며, 지정하지 않으면 문자열의 시작부터 검색한다.
다음 예제는 2번째 위치에서 검색을 시작하여서 'abc' 문자열 패턴과 일치하는 문자열의 횟수를 반환한다.
Oracle Programming |
SELECT REGEXP_COUNT('abcabcabc','abc', 2)
FROM DUAL
Results |
REGEXP_COUNT('ABCABCABC','ABC',2)
-----------------------------------
2
2. Python Pandas(파이썬)
re.findall() 와 len()
문자열(‘abcabcabc’)에서 사용자가 지정한 패턴(“abc”)이 몇 번 발생했는지 검색하여 반환한다.
Python Programming |
import re
len(re.findall(r"abc", 'abcabcabc'))
Results |
3
3. R Programming (R Package)
stringr::str_count() 함수와 stringr::str_sub() 함수
- stringr 과 stringi 패키지 참고
문자열(‘abcabcabc’)의 2번째 문자열 이후에 사용자가 지정한 패턴(“abc”)이 몇 번 발생했는지 검색하여 반환한다.
R Programming |
%%R
stringr::str_count(stringr::str_sub('abcabcabc',2), "abc")
Results |
[1] 3
stringr::str_locate_all 함수
stringr::str_locate_all 함수는 문자열(‘abcabcabc’)을 검색하여서 사용자가 지정한 패턴(“abc”)의 시작 위치와 종료 위치를 반환한다.
R Programming |
%%R
stringr::str_locate_all('abcabcabc', "abc")
Results |
[[1]]
start end
[1,] 1 3
[2,] 4 6
[3,] 7 9
4. R Dplyr Package
stringr::str_count() 함수
직무 이름의 문자열에서 “A” 문자가 존재하는 횟수를 반환한다.
R Programming |
%%R
emp %>%
dplyr::mutate( str_cnt = stringr::str_count(job,"A")) %>%
head(7)
Results |
# A tibble: 7 x 9
empno ename job mgr hiredate sal comm deptno str_cnt
<dbl> <chr> <chr> <dbl> <date> <dbl> <dbl> <dbl> <int>
1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 0
2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 2
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30 2
4 7566 JONES MANAGER 7839 1981-04-02 2975 NA 20 2
5 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30 2
6 7698 BLAKE MANAGER 7839 1981-03-01 2850 NA 30 2
7 7782 CLARK MANAGER 7839 1981-01-09 2450 NA 10 2
5. R sqldf Package
length() 함수와 replace() 함수
abc 문자열의 출현 횟수를 카운트
R Programming |
%%R
sqldf(" select (length('abcabcabc') - length(replace('abcabcabc','abc','') ))/3 abc_cnt" )
Results |
abc_cnt
1 3
length() 함수와 replace() 함수
두 번째 문자열 이후에 존재하는 abc의 출현 횟수를 카운트
R Programming |
%%R
sqldf(" select ( length( substr('abcabcabc' , 2 ) ) - length( replace(substr('abcabcabc' , ( instr('abcabcabc','abc') + 3 ) ), 'abc','') ) ) / 3 as REGEXP_COUNT" )
Results |
REGEXP_COUNT
1 2
6. Python pandasql Package
length() 함수와 replace() 함수
Python Programming |
ps.sqldf(" select ( length( substr('abcabcabc' , 2 ) ) - length( replace(substr('abcabcabc' , ( instr('abcabcabc','abc') + 3 ) ), 'abc','') ) ) / 3 as REGEXP_COUNT ")
Results |
REGEXP_COUNT
0 2
7. R data.table Package
8. Python Duckdb의 SQL
Python Programming |
%%sql
select (length('abcabcabc') - length(replace('abcabcabc','abc','') ))/3 abc_cnt
Python Programming |
duckdb.sql(" select (length('abcabcabc') - length(replace('abcabcabc','abc','') ))/3 as abc_cnt ").df()
Results |
abc_cnt
0 3.0
Python Programming |
%%sql
select FLOOR( ( length( substr('abcabcabc' , 2 ) ) - length( replace(substr('abcabcabc' , ( instr('abcabcabc','abc') + 3 ) ), 'abc','') ) ) / 3 ) as REGEXP_CNT
Python Programming |
duckdb.sql(" select FLOOR( ( length( substr('abcabcabc' , 2 ) ) - length( replace(substr('abcabcabc' , ( instr('abcabcabc','abc') + 3 ) ), 'abc','') ) ) / 3 ) as REGEXP_CNT ").df()
Results |
REGEXP_CNT
0 2.0
--------------------------------------------
[Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table] 오라클 함수와 R & Python 비교 사전 목록 링크 |
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크 |
반응형
댓글