본문 바로가기

Programming/DB관련

Character Functions (문자형 함수)

문자형 함수란? 

- CHAR, VARCHAR2 타입을 인수로 받아 VARCHAR2 타입의 값을 반환하는 함수


CONCAT(char1, char2)

- 두 문자를 결합하는 역할( || 연산자와 같은 역할을 한다.)

SELECT CONCAT('www', 'test') || 'com' name FROM DUAL;


=> CONCAT함수를 이용하여 앞의 두 문자를 결합하고, || 연산자를 이용하여 뒤의

 문자도 결합하여 주었다. 동일한 결과를 반환한다.




INITCAP(char), LOWER(char), UPPER(char)

INITCAP - 주어진 문자열의 첫 번째 문자를 대문자로 변환하여 준다.

LOWER - 주어진 문자열을 소문자로 변환하여 준다.

UPPER - 주어진 문자열을 대문자로 변환하여 준다.


SELECT INITCAP('tEsT') name FROM DUAL UNION ALL

SELECT LOWER('tEsT') name FROM DUAL UNION ALL

SELECT UPPER('tEsT') name FROM DUAL;



 => 각 함수에 맞게 문자열이 변환되었음을 확인 할 수 있다.






LPAD(char1, n [,char2]), RPAD(char1, n [,char2])

LPAD - 왼쪽에 문자열을 끼어 놓는 역할

RPAD - 오른쪽에 문자열을 끼어 놓는 역할

n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환 한다.


SELECT LPAD('test', 5, '*') name FROM DUAL UNION ALL

SELECT RPAD('test', 5, '*') name FROM DUAL;



  => 각 함수에 맞게 각 테스트 문자열 좌우로 *문자를 출력





SUBSTR(char, m, [n]), SUBSTRB(char, m, [n]) 

SUBSTR함수 - m 번째 자리부터 길이가 n개인 문자열을 반환, 

                      m이 음수일 경우에는 뒤에서 m 번째 문자부터 n개의 문자를 반환

SUBSTRB함수 - B는 Byte단위로 처리하겠다는 의미


SELECT SUBSTR('testtest') name FROM DUAL UNION ALL

SELECT SUBSTR('testtest', 3, 4) name FROM DUAL;



 




LENGTH(char), LENGTHB(char)

- 문자의 길이를 반환

SELECT LENGTH('오라클') LEN FROM DUAL UNION ALL

SELECT LENGTHB('오라클') LEN FROM DUAL;








REPLACE(char1, str1, str2)

문자열의 특정 문자를 다른 문자로 변환


SELECT REPLACE('oracleTest','oracle','db') name FROM DUAL;







-- 대소문자를 구분한다는 것을 알수 있다

SELECT REPLACE('OracleTest','oracle','DB') name  FROM DUAL UNION ALL

SELECT REPLACE('OracleTest','Oracle','DB') name  FROM DUAL;









INSTR(char1, str1, m, n)

문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환, 지정한 문자열이 발견되지 않으면 0이 반환

char1 : 지정문자, str1 : 검색문자, m:시작위치, n:검색순위


-- 지정한 문자 OK가 발견되지 않아 0을 반환.

SELECT INSTR('CORPORATE FLOOR','OK') idx FROM DUAL;


-- OR이 있는 위치 2를 반환. 왼쪽부터 비교를 한다는 것을 알 수 있다.

SELECT INSTR('CORPORATE FLOOR','OR') idx FROM DUAL;


-- 왼쪽에서 세 번째부터 시작을 해서 검색된 OR의 위치를 반환 한다.

SELECT INSTR('CORPORATE FLOOR','OR', 3) idx FROM DUAL;


-- 왼쪽에서 세 번째부터 시작을 해서 비교를 하여 OR이 두 번째 검색되는 지점의 위치를 반환 한다.

SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) idx FROM DUAL;


(결과는 임의로 가공하여 보기 좋게 출력한 결과입니다.)



* 문자열 비교(검색착의 LIKE기능)

SELECT name FROM tbl_notice

WHERE inStr(UPPER(name), UPPER('test')) > 0  




=> 위와 같이 UPPER나 ROWER를 사용하여, 대소문자로 치환한 다음

inStr함수를 이용하여 선택한 문자가 포함된 데이터들의 수를 확인하여

비어있지 않으면(적어도 1개 이상의 데이터가 존재하면)

왼쪽의 결과와 같이 해당 데이터들을 출력하여 준다.





TRIM(char1 [,char2]), LTRIM(char1, [,char2]), RTRIM(char1, [,char2])

TRIM함수 특정한 문자를 제거한다. 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거

LTRIM함수 오른쪽부터 문자를 제거 한다. 제거할 문자를 입력하지 않으면 기본적으로 오른쪽 공백이 제거

RTRIM함수 왼쪽부터 문자를 제거 한다. 제거할 문자를 입력하지 않으면 기본적으로 왼쪽 공백이 제거


-- o와 공백을 제거 하는 TRIM 예제이다.

SELECT TRIM('o' FROM 'oracleclub') name FROM DUAL UNION ALL

SELECT TRIM(' oracleclub ') name FROM DUAL;


-- 왼쪽의 문자열을 TRIM하는 예제이다. 

-- 공백의 경우 왼쪽 공백만 제거 되는 것을 확인 할 수 있다.

SELECT LTRIM('oracleclub','oracle') name FROM DUAL UNION ALL

SELECT REPLACE(LTRIM(' oracleclub '),' ','*') name FROM DUAL;


-- 오른쪽의 문자열을 TRIM 하는 예제이다. 

-- 공백의 경우 오른쪽 공백만 제거 되는 것을 확인 할 수 있다.

SELECT RTRIM('oracleclub','club') name FROM DUAL UNION ALL

SELECT REPLACE(RTRIM(' oracleclub '),' ','*') name FROM DUAL;


(결과는 임의로 가공하여 보기 좋게 출력한 결과입니다.)




원본 : http://www.oracleclub.com/lecture/1025





'Programming > DB관련' 카테고리의 다른 글

오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
DECODE 함수 (ORACLE)  (0) 2012.11.12
INNER JOIN & OUTER JOIN  (0) 2012.04.05
서브쿼리  (0) 2012.03.30