본문 바로가기

ORACLE

ORACLE CHAR FUNCv1.0

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