ORACLE CHAR FUNC
from Beginning Oracle Programming | 정보문화사
1. CHAR FUNC
A.
CHR
바이너리 정보를 문자타입으로 변환
SQL> select chr(71) from dual;
C
-
G
B.
INITCAP
영문자의 첫 글자를 대문자로 나머지를 소문자로 변환
SQL> select initcap('HELLO') from dual;
INITC
-----
Hello
SQL> select initcap('HELLO77') from dual;
INITCAP
-------
Hello77
숫자 + 영문 이 뒤섞인 경우 숫자를 포함하여 변환한다.(숫자에는 변화없다)
SQL> select initcap('7HELLO') from dual;
INITCA
------
7hello
문자 + 문자인 경우 각 단어에 대해서 수행한다.
SQL> select initcap('HELLO THERE') from dual;
INITCAP('HE
-----------
Hello There
C.
INSTR
특정 문자열을 찾아 위치값을 반환하는 함수이다. 첫 문자의
위치는 1이다. 찾지
못하면 0을 반환한다.
SQL> select instr('hi, nice to meet you. toad is
my favorite tool','f') from dual;
INSTR('HI,NICETOMEETYOU.TOADISMYFAVORITETOOL','F')
--------------------------------------------------
34
문자열의 시작위치를 찾는 걸 확인할 수 있다.
SQL> select instr('hi, nice to meet you. toad is
my favorite tool','nice') from dual;
INSTR('HI,NICETOMEETYOU.TOADISMYFAVORITETOOL','NICE')
-----------------------------------------------------
5
SQL> select instr('hi nice to meet you. toad is my
favorite tool','f','35') from dual;
INSTR('HINICETOMEETYOU.TOADISMYFAVORITETOOL','F','35')
------------------------------------------------------
0
INSTR 의
세번 째 파라미터는 시작위치를 의미한다.
SQL> select instr('hi nice to meet you. toad is my
favorite tool','to','2') from dual;
INSTR('HINICETOMEETYOU.TOADISMYFAVORITETOOL','TO','2')
------------------------------------------------------
9
instr 의
네번째 파라미터는 몇 번째에 해당하는 이란 의미에 대응된다.
아래 입력을 보면 to 라는 문자열은 전체를 보았을 때 두
곳이 있고 2 를 입력으로
사용했기 때문에 두번째에 해당하는 위치를 반환한다.
SQL> select instr('hi nice to meet you. toad is my
favorite tool','to','1','2') from dual;
INSTR('HINICETOMEETYOU.TOADISMYFAVORITETOOL','TO','1','2')
----------------------------------------------------------
22
D.
LENGTH
입력의 길이를 반환한다. 공백,특수문자는 1 한글은 2의
길이를 가진다.
SQL> select length('length') from dual;
LENGTH('LENGTH')
----------------
6
SQL> select length(' length') from dual;
LENGTH('LENGTH')
----------------
7
SQL> select length('%length') from dual;
LENGTH('%LENGTH')
-----------------
7
SQL> select length('길이') from dual;
LENGTH('길이')
--------------
4
SQL> select length('길이length') from dual;
LENGTH('길이LENGTH')
--------------------
10
E.
LOWER
대문자를 소문자로 변환시켜주는 함수이다. 한글엔 해당되지
않는다.
SQL> select lower('LOWER') from dual;
LOWER
-----
lower
SQL> select lower('낮게') from dual;
LOWE
----
낮게
SQL> select lower('LOWER낮게') from dual;
LOWER('LO
---------
lower낮게
F.
LPAD
문자열 좌측에 공백을 넣을 때 사용한다. 계층쿼리에서 많이
사용된다.
SQL> select lpad('*',3) from dual;
LPA
---
*
SQL> select lpad('*',3)||'*hello' from dual;
LPAD('*',
---------
**hello
LPAD 의 세번째
파라미터는 공백대신에 이 값을 출력해라 란 의미이다.
SQL> select lpad('*',3,'%') from dual;
LPA
---
%%*
SQL> select length(lpad('*',3)) from
dual;
LENGTH(LPAD('*',3))
-------------------
3
SQL> select length(lpad('*',3,'%')) from
dual;
LENGTH(LPAD('*',3,'%'))
-----------------------
3
G.
LTRIM
문자열 좌측의 공백을 제거하거나 잘라내는 함수이다.
SQL> select ltrim('hello','he') from dual;
LTR
---
llo
SQL> select ltrim(' hello') from dual;
LTRIM
-----
hello
문자열의 좌측으로부터 SCAN 하고 해당사항이 있는 경우
잘라내기 때문에 아래와 같은
경우 아무런 변화가 없다.
SQL> select ltrim('hello','ll') from dual;
LTRIM
-----
hello
/*+ 이해가
가지 않는 결과상태이다. 생각으론 lo 가 되어야 할 듯
한데… 추가 조사 필요 */
SQL> select ltrim('hello','hel') from dual;
L
-
o
H.
RPAD
우측에 공백이나 문자를 채워넣을 때 사용한다.
컬럼과 컬럼 사이의 간격을 일정하게 유지하여 정렬된
출력 결과물을 만들 대
사용한다.
SQL> select rpad('hello',10,'^') from dual;
RPAD('HELL
----------
hello^^^^^
SQL> select rpad(' ',10,'^') from dual;
RPAD('',10
----------
^^^^^^^^^
I.
RTRIM
문자 우측의 공백을 제거할 때 사용한다.
SQL> select rtrim('hello ') from dual;
RTRIM
-----
hello
SQL> select 'hello ' from dual;
'HELLO'
----------
hello
J.
SOUNDEX
입력된 문자에 대해 특정 출력값을 가지며 비슷한 발음에 대해 같은 출력값을
리턴한다.
SQL> select soundex('smis') from dual;
SOUN
----
S520
SQL> select soundex('smise') from dual;
SOUN
----
S520
SQL> select soundex('smease') from dual;
SOUN
----
S520
한글은 해당사항 없다.
SQL> select soundex('배') from dual;
S
-
K.
SUBSTR
문자열을 추출하는데 사용한다. 두번째는 포지션 세번째는 문자열길이를
의미하는 파라미터이다.
SQL> select substr('crop this mark',6,4) from
dual;
SUBS
----
this
SQL> select substr('crop this mark',6) from dual;
SUBSTR('C
---------
this mark
L.
TRANSLATE
두번째 파라미터에 해당하는 문자열을 세번째로 변환한다. 길이가
일치해야 하고 일치하지 않는 경우 아래와 같이 잘린다.
SQL> select translate('crop this
mark','this','these') from dual;
TRANSLATE('CRO
--------------
crop thes mark
SQL> select translate('this','this','these') from
dual;
TRAN
----
thes
SQL> select translate('this','this','that') from
dual;
TRAN
----
that
SQL> select translate('a b c',' ','*') from dual;
TRANS
-----
a*b*c
SQL> select translate('tHIs','HI','hi') from dual;
TRAN
----
this
M.
TRIM
LTRIM, RTRIM 과 같은 기능을 한다. 사용 옵션은 TRAILING(끝에서),
LEADING(시작에서), BOTH(양쪽에서) 세가지 옵션이 있다.
SQL> select trim(trailing '*' from '**hello**')
from dual;
TRIM(TR
-------
**hello
SQL> select trim(both '*' from '**hello**') from
dual;
TRIM(
-----
hello
SQL> select trim(leading '*' from '**hello**')
from dual;
TRIM(LE
-------
hello**
SQL> select trim(both '*' from '**he**llo**') from
dual;
TRIM(BO
-------
he**llo