★ 단일행 함수의 종류 ★
- 문자 함수
- 숫자 함수
- 날짜 함수
- 변환 함수
- 기타 함수
upper('문자열')
'문자열'에 있는 모든 영문자를 대문자로 변환
lower('문자열')
'문자열'에 있는 모든 영문자를 소문자로 변환
initcap('문자열')
'문자열'을 단어별(구분자 공백으)로 첫글자만 대문자로, 나머지는 소문자로 변환시켜준다.
select upper('aBcdEF aBcdEF') -- 모두 대문자로
, lower('aBcdEF aBcdEF') -- 모두 소문자로
, initcap('aBcdEF aBcdEF') -- 첫글자 대문자,나머지 소문자
from dual;
-- 결과
-- ABCDEF ABCDEF | abcdef abcdef | Abcdef Abcdef
select '쫑쫑이 쫑쫑이'
, substr('쫑쫑이 쫑쫑이', 2, 5) -- 2글자부터 5글자
, substr('쫑쫑이 쫑쫑이', 5) -- 5글자부터 마지막까지
from dual;
-- 결과
-- 쫑쫑이 쫑쫑이 | 쫑이 쫑쫑 | 쫑쫑이
select instr('STUDYstudySTUDYSTUDYsTUDY','STUDY',1,3)
, instr('STUDYstudySTUDYSTUDYsTUDY','STUDY',3)
from dual;
-- instr('STUDYstudySTUDYSTUDYsTUDY','STUDY',1,3) 결과 : 16
-- STUDYstudySTUDYS
-- 대소문자 구분 O
-- instr('STUDYstudySTUDYSTUDYsTUDY','STUDY',3) 결과 : 11
-- STUDYstudyS
-- 출발점 3, 찾고 싶은 문자가 나오는 순서는 기본값 1에 해당된다.
★ 응용
EX) filepath = c:\myDocuments\resume.hwp
select reverse(substr(reverse(filepath), 1,
instr(reverse(filepath),'\',1) - 1)) as filename
from dual;
-- instr(reverse(filepath),'\',1)
-- filepath를 거꾸로 나열한 것에서 '/' 의 위치 찾기
-- 결과 : 11
-- substr(reverse(filepath), 1
-- ,reverse(filepath)에서 첫번째로 '/'이 나오는 위치 -1)
-- 결과 : pwh.emuser
-- reverse ( ) : 뒤집혀서 정리된 것을 최종으로 뒤집어 두기
-- 결과 : pwh.emuser
lpad('문자열', byte 수, '문자'or 숫자)
byte 수 만큼 자리를 잡고 '문자열'을 나열한 후, '문자열'의 왼쪽을 3번째 칸에 넣은 '문자' or 숫자로 채운다.
rpad('문자열', byte 수, '문자'or 숫자)
byte 수 만큼 자리를 잡고 '문자열'을 나열한 후, '문자열'의 오른쪽을 3번째 칸에 넣은 '문자' or 숫자로 채운다.
select lpad('최고최고!',15,'@')
, rpad('최고최고!',15,0)
from dual;
-- 결과
-- @@@@@@최고최고! | 최고최고!000000
-- 한글 2byte, 영어 및 특수문자 1byte
ltrim('문자열', '지우고 싶은 글자')
지우고 싶은 글자를 왼쪽부터 제거
rtrim('문자열', '지우고 싶은 글자')
지우고 싶은 글자를 오른쪽부터 제거
trim
왼쪽, 오른쪽 공백 제거
select ltrim('abcdababcdabccccaZZabcaaadd','abcd')
, rtrim('abcdababcdabccccaZZabcaaadd','abcd')
, rtrim(ltrim('abcdababcdabccccaZZabcaaadd','abcd'),'d')
from dual;
-- 결과
-- ZZabcaaadd | abcdababcdabccccaZZ | ZZabcaaa
-- 지우고 싶은 글자가 아닌 것이 있을 경우 멈춘다.
translate('문자열', '바꾸고 싶은 문자열', '원하는 문자')
바꾸고 싶은 문자열의 글자를 하나하나 바꾸어준다.
replace('문자열', '바꾸고 싶은 문자열', '원하는 문자')
바꾸고 싶은 문자열 전체를 원하는 문자로 바꾸어준다.
select translate('010-0012-1203', '00', '영영')
, replace('010-0012-1203', '00', '영영')
from dual;
-- 결과
-- 영1영-영영12-12영3 | 010-영영12-1203
-> local_hr에서작업한것