문자열 처리 함수
-- CONCAT(char1, char2) : 문자 연결
-- select concat('blue', 'color') concat from dual;
-- INITCAP(char) : 단어의 첫번째 문자를 대문자로 변환
-- select initcap('hong gil dong') from dual;
-- LOWER(char) : 모든 문자를 소문자로 변환
-- select lower('HONG GIL DONG') from dual;
select lower(ename) from empcopy;
-- UPPER(char) : 모든 문자를 대문자로 변환
-- select upper('hong gil dong') from dual;
-- 함수 안에 함수 사용
select concat(lower(ename), upper(ename)) 이름 from empcopy;
-- LPAD(char1, n, [char2]) : 왼쪽에 문자열 채우기
-- select lpad('gil dong', 10, '*') from dual;
select lpad(ename, 10, '*') from empcopy;
-- RPAD(char1, n, [char2]) : 오른쪽에 문자열 채우기
-- select rpad('gil dong', 10, '*') from dual;
select rpad(ename, 10, '*') from empcopy;
-- SUBSTR(char, m, [n]) : m 번째 자리부터 길이가 n개인 문자열을 반환 / m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환
-- select substr('hong gil dong', 6, 3) from dual;
-- select substr('hong gil dong', -5, 3) from dual;
select job, substr(job, 2, 3) from empcopy;
-- LENGTH(char) : 글자수 구하기
-- select length('gil dong') from dual;
select ename, length(ename) from empcopy;
-- 이름의 문자길이의 50% 만큼 출력하고, 나머지 문자는 '*' 로 표시하라
--select ename 이름1, rpad(substr(ename, 1, length(ename)/2), length(ename), '*') 이름2 from empcopy;
select ename, rpad(substr(ename, 1, ceil(length(ename)/2)), length(ename), '*') from empcopy;
-- REPLACE(cahr1, str1, str2) : 문자 치환
select ename, replace(ename, 'A', '에이') replace from empcopy;
-- INSTR : 문자위치 구하기
select instr(job, 'SA') instr, job from empcopy;
select instr(job, 'A') instr, job from empcopy;
-- 3번째 문자부터 검색
select instr(job, 'A', 3) instr, job from empcopy;
-- 2번째 문자부터 검색을 시작해서 'A' 문자가 두번째 위치의 값
select instr(job, 'A', 2, 2) instr, job from empcopy;
-- TRIM : 앞뒤 공백 및 특정문자 제거 / 중간의 공백 및 특정문자에는 영향이 없음 / 숫자의 경우 문자로 변환됨
select 'result = ' || trim(' sam ple ') || '결과' from dual;
select ename, trim('S' from ename) from emp;
-- LTRIM : 왼쪽 문자 제거
select ltrim('abcabcTestabc', 'abc') from dual;
-- RTRIM : 오른쪽 문자 제거
select rtrim('abcacbcSampleTest', 'abt') from dual;