5.2. Character Functions (문자형 함수)
문자형 함수란 CHAR, VARCHAR2 타입을 인수로 받아 VARCHAR2 타입의 값을 반환하는 함수이다.
CONCAT(char1, char2)
CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 한며, "||" 연산자와 같은 역할을 한다.
-- CONCAT 예제
SELECT
CONCAT(
'www.'
,
'oracleclub'
)||
'.com'
name
FROM
DUAL;
NAME
------------------
www.gurubee.net
INITCAP(char), LOWER(char), UPPER(char)
INITCAP : 주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 준다.
LOWER : 주어진 문자열을 소문자로 변환시켜 준다.
UPPER : 주어진 문자열을 대문자로 변환시켜 준다.
-- 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;
NAME
----------
Oracleclub
ORACLECLUB
oracleclub
LPAD(char1, n [,char2]), RPAD(char1, n [,char2])
LPAD : 왼쪽에 문자열을 끼어 놓는 역할을 한다.
RPAD : 오른쪽에 문자열을 끼어 놓는 역할을 한다.
n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환 한다.
-- LPAD, RPAD 예제
SELECT
LPAD(
'oracleclub'
, 12,
'*'
)
name
FROM
DUAL
UNION
ALL
SELECT
RPAD(
'oracleclub'
, 12,
'*'
)
name
FROM
DUAL;
NAME
------------
**oracleclub
oracleclub**
SUBSTR(char, m ,[n]), SUBSTRB(char, m ,[n])
SUBSTR 함수는 m 번째 자리부터 길이가 n개인 문자열을 반환 한다.
m이 음수일 경우에는 뒤에서 m 번째 문자부터 n개의 문자를 반환한다.
SUBSTRB 함수에서 B는 Byte단위로 처리하겠다는 의미이다.
-- 세번째 이후 문자열 반환.
SELECT
SUBSTR(
'oracleclub'
, 3)
name
FROM
DUAL;
NAME
--------
acleclub
-- 세번째 이후 네개의 문자열 반환.
SELECT
SUBSTR(
'oracleclub'
, 3, 4)
name
FROM
DUAL;
NAME
----
acle
-- 뒤에서 세번째아후 두개의 문자열 반환.
SELECT
SUBSTR(
'oracleclub'
, -3, 2)
name
FROM
DUAL;
NA
--
lu
-- DB가 UTF-8인 경우 아래 SQL의 결과는?.
SELECT
SUBSTRB(
'오라클클럽'
,1)
name
FROM
DUAL
UNION
ALL
SELECT
SUBSTRB(
'오라클클럽'
,3)
name
FROM
DUAL;
LENGTH(char), LENGTHB(char)
문자열의 길이를 반환 한다.
-- 문자열의 LENGTH를 조회하는 예제.
SELECT
LENGTH(
'오라클클럽'
) len
FROM
DUAL
UNION
ALL
SELECT
LENGTHB(
'오라클클럽'
) len
FROM
DUAL;
-- DB가 UTF-8인 경우
LEN
--------
5
15
REPLACE(char1, str1, str2)
REPLACE는 문자열의 특정 문자를 다른 문자로 변환 한다.
-- 간단한 REPLACE 예이다.
SELECT
REPLACE
(
'oracleclub'
,
'oracle'
,
'db'
)
name
FROM
DUAL;
NAME
------
dbclub
-- 대소문자를 구분한다는 것을 알수 있다.
SELECT
REPLACE
(
'OracleClub'
,
'oracle'
,
'DB'
)
name
FROM
DUAL
UNION
ALL
SELECT
REPLACE
(
'OracleClub'
,
'Oracle'
,
'DB'
)
name
FROM
DUAL;
NAME
----------
OracleClub
DBClub
INSTR (char1, str1, m, n)
문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환 한다. 지정한 문자열이 발견되지 않으면 0이 반환 된다.
char1 : 지정문자, str1 : 검색문자, m:시작위치, n:검색순위
-- 지정한 문자 OK가 발견되지 않아 0을 반환.
SELECT
INSTR(
'CORPORATE FLOOR'
,
'OK'
) idx
FROM
DUAL;
IDX
----------
0
-- OR이 있는 위치 2를 반환. 왼쪽부터 비교를 한다는 것을 알 수 있다.
SELECT
INSTR(
'CORPORATE FLOOR'
,
'OR'
) idx
FROM
DUAL;
IDX
----------
2
-- 왼쪽에서 세 번째부터 시작을 해서 검색된 OR의 위치를 반환 한다.
SELECT
INSTR(
'CORPORATE FLOOR'
,
'OR'
, 3) idx
FROM
DUAL;
IDX
----------
5
-- 왼쪽에서 세 번째부터 시작을 해서 비교를 하여 OR이 두 번째 검색되는 지점의 위치를 반환 한다.
SELECT
INSTR(
'CORPORATE FLOOR'
,
'OR'
, 3, 2) idx
FROM
DUAL;
IDX
----------
14
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;
NAME
----------
racleclub
oracleclub
-- 왼쪽의 문자열을 TRIM하는 예제이다.
-- 공백의 경우 왼쪽 공백만 제거 되는 것을 확인 할 수 있다.
SELECT
LTRIM(
'oracleclub'
,
'oracle'
)
name
FROM
DUAL
UNION
ALL
SELECT
REPLACE
(LTRIM(
' oracleclub '
),
' '
,
'*'
)
name
FROM
DUAL;
NAME
-----------
ub
oracleclub*
-- 오른쪽의 문자열을 TRIM 하는 예제이다.
-- 공백의 경우 오른쪽 공백만 제거 되는 것을 확인 할 수 있다.
SELECT
RTRIM(
'oracleclub'
,
'club'
)
name
FROM
DUAL
UNION
ALL
SELECT
REPLACE
(RTRIM(
' oracleclub '
),
' '
,
'*'
)
name
FROM
DUAL;
NAME
-----------
oracle
*oracleclub
Oracle Character Functions
CHR
CONCAT
INITCAP
LOWER
LPAD
LTRIM
NLS_INITCAP
NLS_LOWER
NLSSORT
NLS_UPPER
REGEXP_REPLACE
REGEXP_SUBSTR
REPLACE
RPAD
RTRIM
SOUNDEX
SUBSTR
TRANSLATE
TREAT
TRIM
UPPER
'Database > Oracle SQL' 카테고리의 다른 글
5.6. DECODE와 CASE (0) | 2019.04.17 |
---|---|
5.5. 기타 함수들 (0) | 2019.04.17 |
5.4. Conversion Functions (변환 함수) (0) | 2019.04.17 |
5.3. Datetime Functions (날짜 함수) (0) | 2019.04.17 |
5.1. Numeric Functions (숫자형 함수) (0) | 2019.04.17 |
4.6. Commit과 Rollback 예제 (0) | 2019.04.17 |
4.5. 트랜잭션(commit과 rollback) (0) | 2019.04.17 |
4.4.3. CROSS JOIN, INNER JOIN, NATURAL JOIN, USING, ON (0) | 2019.04.17 |