포스팅 목차
* 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
[ SUBSTR Oracle Function ]
SUBSTR 함수는 문자열 Char에서 position 문자 위치를 시작해서 substring_length 문자 길이만큼 문자열을 추출하여 반환한다. SUBSTR 함수는 입력 문자 세트에 의해 정의된 문자를 이용하여 길이를 측정한다. SUBSTRB함수는 문자 대신에 바이트를 사용한다. SUBSTRC함수는 UNICODE를 사용한다. SUBSTR2 함수는 UCS2 코드 포인트를 사용한다. SUBSTR4 함수는 UCS4 코드 포인트를 사용한다.
- 함수 설명 : SUBSTR 오라클 함수 링크
1. Oracle(오라클)
substr() 함수
Oracle Programming |
SELECT SUBSTR('ABCDEFG', 3) SUBSTR_FUNC_1,
SUBSTR('ABCDEFG', 3, 2) SUBSTR_FUNC_2
FROM DUAL;
Results |
SUBSTR_FUNC_1 SUBSTR_FUNC_2
------------------------------
CDEFG CD
2. Python Pandas(파이썬)
index
‘ABCDEFG’ 문자열의 인덱스 0을 시작으로 1씩 증가시키면서 인덱스 2까지 문자열을 추출한다. ‘ABCDEFG’ 문자열의 맨 처음을 시작으로 3자리 문자열을 추출.
Python Programming |
'ABCDEFG'[0:3:1]
Results |
'ABC'
index
사원명의 맨 처음을 시작으로 추출 간격은 1씩 증가시켜서 3자리 문자열을 추출한다.
Python Programming |
emp['ename'].apply(lambda x : x[0:3:1]).head(7)
Results |
0 SMI
1 ALL
2 WAR
3 JON
4 MAR
5 BLA
6 CLA
Name: ename, dtype: object
str.slice() 함수
Python Programming |
emp['ename'].str.slice(start=0, stop=3, step=1).head(7)
Results |
0 SMI
1 ALL
2 WAR
3 JON
4 MAR
5 BLA
6 CLA
Name: ename, dtype: object
3. R Programming (R Package)
base::substr() 함수
‘ABCDEFG’ 문자열의 인덱스 1을 시작으로 3자리 문자열을 추출한다.
R Programming |
%%R
base::substr('ABCDEFG',1,3)
Results |
[1] "ABC"
base::substring() 함수
R Programming |
%%R
base::substring('ABCDEFG',1,3)
Results |
[1] "ABC"
stringr::str_sub 함수
R Programming |
%%R
stringr::str_sub('ABCDEFG',1,3)
Results |
[1] "ABC"
substr() 함수
사원명의 맨 처음을 시작으로 3자리 문자열을 추출한다.
R Programming |
%%R
substr(emp$ename,1,3)
Results |
[1] "SMI" "ALL" "WAR" "JON" "MAR" "BLA" "CLA" "SCO" "KIN" "TUR" "ADA" "JAM"
[13] "FOR" "MIL"
4. R Dplyr Package
stringr::str_sub() , base::substr(), base::substring() 함수
사원명의 맨 처음을 시작으로 3자리 문자열을 추출한다.
R Programming |
%%R
emp %>%
dplyr::mutate( sub_str_1 = stringr::str_sub(ename,1,3),
sub_str_2 = stringr::str_sub(ename,-3,-1),
sub_str_3 = base::substr(ename,1,3),
sub_str_4 = base::substring(ename,1,3)) %>%
dplyr::select ( -hiredate,-job ) %>%
head(10)
Results |
# A tibble: 10 x 10
empno ename mgr sal comm deptno sub_str_1 sub_str_2 sub_str_3 sub_str_4
<dbl> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr> <chr>
1 7369 SMITH 7902 800 NA 20 SMI ITH SMI SMI
2 7499 ALLEN 7698 1600 300 30 ALL LEN ALL ALL
3 7521 WARD 7698 1250 500 30 WAR ARD WAR WAR
4 7566 JONES 7839 2975 NA 20 JON NES JON JON
5 7654 MARTIN 7698 1250 1400 30 MAR TIN MAR MAR
6 7698 BLAKE 7839 2850 NA 30 BLA AKE BLA BLA
7 7782 CLARK 7839 2450 NA 10 CLA ARK CLA CLA
8 7788 SCOTT 7566 3000 NA 20 SCO OTT SCO SCO
9 7839 KING NA 5000 NA 10 KIN ING KIN KIN
10 7844 TURNER 7698 1500 0 30 TUR NER TUR TUR
5. R sqldf Package
substr() 함수
R Programming |
%%R
sqldf(" SELECT SUBSTR('ABCDEFG', 3) sub_str_1,
SUBSTR('ABCDEFG', 3, 2) sub_str_2 ")
Results |
substr_1 substr_2
1 CDEFG CD
substr() 함수
R Programming |
%%R
sqldf(" SELECT ename,
SUBSTR(ename,1,3) sub_str_1
from emp ")[1:10, ]
Results |
ename sub_str_1
1 SMITH SMI
2 ALLEN ALL
3 WARD WAR
4 JONES JON
5 MARTIN MAR
6 BLAKE BLA
7 CLARK CLA
8 SCOTT SCO
9 KING KIN
10 TURNER TUR
6. Python pandasql Package
substr() 함수
Python Programming |
ps.sqldf(" SELECT SUBSTR('ABCDEFG', 3) sub_str_1, \
SUBSTR('ABCDEFG', 3, 2) sub_str_2 ")
Results |
sub_str_1 sub_str_2
0 CDEFG CD
7. R data.table Package
stringr::str_sub() , base::substr() , base::substring() 함수
사원명의 맨 처음을 시작으로 3자리 문자열을 추출한다.
R Programming |
%%R
DT <- data.table(emp)
dept_DT <- data.table(dept)
DT[,`:=`(sub_str_1 = stringr::str_sub(ename,1,3),
sub_str_2 = base::substr(ename,1,3),
sub_str_3 = base::substring(ename,1,3))][, c("job","hiredate"):=NULL][1:10, ]
Results |
empno ename mgr sal comm deptno sub_str_1 sub_str_2 sub_str_3
1: 7369 SMITH 7902 800 NA 20 SMI SMI SMI
2: 7499 ALLEN 7698 1600 300 30 ALL ALL ALL
3: 7521 WARD 7698 1250 500 30 WAR WAR WAR
4: 7566 JONES 7839 2975 NA 20 JON JON JON
5: 7654 MARTIN 7698 1250 1400 30 MAR MAR MAR
6: 7698 BLAKE 7839 2850 NA 30 BLA BLA BLA
7: 7782 CLARK 7839 2450 NA 10 CLA CLA CLA
8: 7788 SCOTT 7566 3000 NA 20 SCO SCO SCO
9: 7839 KING NA 5000 NA 10 KIN KIN KIN
10: 7844 TURNER 7698 1500 0 30 TUR TUR TUR
8. Python Duckdb의 SQL
Python Programming |
%%sql
SELECT SUBSTR('ABCDEFG', 3) as sub_str1,
SUBSTR('ABCDEFG', 3, 2) as sub_str2
Python Programming |
duckdb.sql(" SELECT SUBSTR('ABCDEFG', 3) as sub_str1, \
SUBSTR('ABCDEFG', 3, 2) as sub_str2 ").df()
Results |
sub_str1 sub_str2
0 CDEFG CD
--------------------------------------------
[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 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크 |
반응형
댓글