문자형 함수는 데이터타입 CHAR, VARCHAR2의 데이터를 이용해 다양한 기능을 하는 함수들로
아래와 같은 종류가 있다.
CONCAT
INITCAP
LOWER
UPPER
LPAD
RPAD
SUBSTR
SUBSTRB
LENGTH
LENGTHB
REPLACE
INSTR
TRIM
LTRIM
RTRIM
과 같이 여러개가 있다.
아래의 예제를 통해 쓰임을 파악해보자
-- 2. 문자형 함수: CHAR, VARCHAR2 타입을 인수로 받아 VARCHAR2 타입의 값을 반환하는 함수이다. -- 1) CONCAT(char1, char2) -- CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 한며, "||" 연산자와 같은 역할을 한다. SELECT CONCAT('www.', 'oracleclub')||'.com' name FROM DUAL; -- 2) INITCAP(char), LOWER(char), UPPER(char) -- INITCAP : 주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 준다. -- LOWER : 주어진 문자열을 소문자로 변환시켜 준다. -- UPPER : 주어진 문자열을 대문자로 변환시켜 준다. SELECT INITCAP('oracleclub') name FROM DUAL UNION ALL SELECT UPPER('oracleclub') name FROM DUAL UNION ALL SELECT LOWER('oracleclub') name FROM DUAL; -- UNION 은 합집합이며, UNION ALL 은 중복을 포함하는 합집합 이다. -- 3) LPAD(char1, n [,char2]), RPAD(char1, n [,char2]) -- LPAD : 왼쪽에 문자열을 끼어 넣는 역할을 한다. -- RPAD : 오른쪽에 문자열을 끼어 넣는 역할을 한다. -- n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환 한다. SELECT LPAD('oracleclub', 12, '*') name FROM DUAL UNION ALL SELECT RPAD('oracleclub', 12, '*') name FROM DUAL; -- 4) SUBSTR(char, m ,[n]), SUBSTRB(char, m ,[n]) -- SUBSTR 함수는 m 번째 자리부터 길이가 n개인 문자열을 반환 한다. -- m이 음수일 경우에는 뒤에서 m 번째 문자부터 n개의 문자를 반환한다. -- SUBSTRB 함수에서 B는 Byte단위로 처리하겠다는 의미이다. -- 세번째 이후 문자열 반환. SELECT SUBSTR('oracleclub', 3) name FROM DUAL; -- 세번째 이후 네개의 문자열 반환. SELECT SUBSTR('oracleclub', 3, 4) name FROM DUAL; -- 뒤에서 세번째아후 두개의 문자열 반환. SELECT SUBSTR('oracleclub', -3, 2) name FROM DUAL; -- DB가 UTF-8인 경우 아래 SQL의 결과는?(이경우 한글 한 글자는 3바이트 이다.) SELECT SUBSTRB('오라클클럽',1) name FROM DUAL UNION ALL SELECT SUBSTRB('오라클클럽',3) name FROM DUAL; -- 5) LENGTH(char), LENGTHB(char) -- 문자열의 길이를 반환 한다. SELECT LENGTH('오라클클럽') len FROM DUAL UNION ALL SELECT LENGTHB('오라클클럽') len FROM DUAL; -- 6) REPLACE(char1, str1, str2) -- REPLACE는 문자열의 특정 문자를 다른 문자로 변환 한다. SELECT REPLACE('oracleclub','oracle','db') name FROM DUAL; -- 대소문자를 구분한다는 것을 알수 있다. SELECT REPLACE('OracleClub','oracle','DB') name FROM DUAL; SELECT REPLACE('OracleClub','Oracle','DB') name FROM DUAL; -- 7) INSTR (char1, str1, m, n) -- 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환 한다. -- 지정한 문자열이 발견되지 않으면 0이 반환 된다. -- char1 : 지정문자, str1 : 검색문자, m:시작위치, n:검색순위 -- 지정한 문자 OK가 발견되지 않아 0을 반환. SELECT INSTR('CORPORATE FLOOR','OK') idx FROM DUAL; -- 0 반환 SELECT INSTR('CORPORATE FLOOR','OR') idx FROM DUAL; -- 2 반환 -- 왼쪽에서 세 번째부터 시작을 해서 검색된 OR의 위치를 반환 한다. SELECT INSTR('CORPORATE FLOOR','OR', 3) idx FROM DUAL; -- 5 반환 -- 왼쪽에서 세 번째부터 시작을 해서 비교를 하여 OR이 두 번째 검색되는 지점의 위치를 반환 한다. SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) idx FROM DUAL; -- 8) TRIM (char1 FROM char2), LTRIM (char1[,char2]), RTRIM (char1[,char2]) -- 앞(왼쪽) 또는 뒤(오른쪽) -- 9) TRIM : 특정한 문자를 제거 한다. 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 된다. -- 10) LTRIM : 왼쪽부터 문자를 제거 한다. 제거할 문자를 입력하지 않으면 기본적으로 왼쪽 공백이 제거 된다. -- 11) RTRIM : 오른쪽부터 문자를 제거 한다. 제거할 문자를 입력하지 않으면 기본적으로 오른쪽 공백이 제거 된다. -- o와 공백을 제거 하는 TRIM 예제 SELECT TRIM('o' FROM 'oracleclub') name FROM DUAL; -- racleclub -- 왼쪽의 문자열을 TRIM하는 예제 -- 공백의 경우 왼쪽 공백만 제거 되는 것을 확인 할 수 있다. SELECT LTRIM('oracleclub','oracle') name FROM DUAL; SELECT REPLACE(LTRIM(' oracleclub '),' ','*') name FROM DUAL; -- 오른쪽의 문자열을 TRIM 하는 예제 -- 공백의 경우 오른쪽 공백만 제거 되는 것을 확인 할 수 있다. SELECT RTRIM('oracleclub','club') name FROM DUAL UNION ALL SELECT REPLACE(RTRIM(' oracleclub '),' ','*') name FROM DUAL;
'Oracle DB 11g > 02.활용, SQL' 카테고리의 다른 글
[DB]02-15.Oracle DB 숫자형 함수(ABS, CEIL, FLOOR, OMD, ROUND, TRUNC) (0) | 2018.10.12 |
---|---|
[DB]02-14.Oracle DB 날짜 함수(SYSDATE, SYSTIMESTAMP, ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, NEXT_DAY) (0) | 2018.10.12 |
[DB]02-12.Oracle DB 집계함수(COUNT, MAX, MIN, AVG, ROUND, SUM) (0) | 2018.10.12 |
[DB]02-11.Oracle DB 시퀀스(Sequence) (0) | 2018.10.08 |
[DB]02-10.Oracle DB 뷰(View) (0) | 2018.10.08 |