문자형 함수란?
- 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 |