2. -- ‘a’문자를 찾는데 4번째부터 찾고 a가 2번째 나타나는 것을 찾는다.
SQL> select instr('OracleJavaCommunity','a',4, 2) from dual;
INSTR('ORACLEJAVACOMMUNITY','A',4,2)
------------------------------------
10
-- 뒤에서부터 검색을 하며, 뒤에서부터 10번째부터 ‘a’를 좌측으로 검색하여 두 번째
출현하는 ‘a’의 위치를 리턴한다.
SQL> select instr('OracleJavaCommunity','a',-10, 2) from dual;
INSTR('ORACLEJAVACOMMUNITY','A',-10,2)
--------------------------------------
8
SQL기초강좌_문자함수
문자함수
3. -- 뒤에서부터 검색을 하며, 뒤에서부터 11번째부터 ‘a’를 좌측으로 검색하여 두 번째
출현하는 ‘a’의 위치를 리턴한다.
SQL> select instr('OracleJavaCommunity','a',-11, 2) from dual;
INSTR('ORACLEJAVACOMMUNITY','A',-11,2)
--------------------------------------
3
SQL기초강좌_문자함수
문자함수
LENGTH(c) : 인수 c의 길이를 돌려준다. (한글도 1로 돌려줌)
LENGTHB(c) : 인수 c의 길이를 돌려준다. (바이트 단위)
4. SQL> select length('안녕TATATA') from dual;
LENGTH('안녕TATATA')
--------------------
8
-- 아래는 lengthb 함수의 예이다, 한글이 한글자로 간주해 1을 리턴하는 length와 한
글의 바이트수를 되돌리는 lengthb의 차이이다.
SQL> select lengthb('안녕TATATA') from dual;
LENGTHB('안녕TATATA')
---------------------
10
SQL기초강좌_문자함수
문자함수
5. SQL> select lower('안녕TATATA') from dual;
LOWER('안
----------
안녕tatata
SQL기초강좌_문자함수
문자함수
LOWER(c) : 인수 c를 소문자로 변환한다.
LPAD(c1, n, c2) : 전체의 길이가 n이며 c1의 왼쪽을 c2로 채운다. 만약 c2가 생략되었
다면 공백으로 채운다.
LTRIM(c, [,set]) : 인수c의 왼쪽부터 c가 아닐 때까지 set에 지정된 문자를 제거한다. 만약
set이 지정되어 있지 않으면 공백을 제거한다. 흔히 LTRIM은 set을 생략하여 좌측 공백을
제거하는 용도로 많이 사용된다.
6. SQL> select ename, lpad(sal, 5, '*') from emp where rownum < 5;
ENAME LPAD(SAL,5
---------- ----------
SMITH **800
ALLEN *1600
WARD *1250
JONES *2975
-- ‘A’가 아닌 문자가 나타날 때 까지 왼쪽에서부터 제거한다.
SQL> select ltrim('AAAOracleJava','A') from dual;
LTRIM('AAA
----------
OracleJava
SQL기초강좌_문자함수
문자함수
8. SQL> select replace('myJava','my','Oracle') from dual;
REPLACE('M
---------------
OracleJava
SQL기초강좌_문자함수
문자함수
REPLACE(c, a, b) : 인수 c의 문자중에서 a를 b로 바꿈
RPAD(c1, n, c2) : 전체의 길이가 n이며 c1의 오른쪽을 c2로 채운다. 만약 c2가 생략되
었다면 공백으로 채운다.
RTRIM(c, [,set]) : 인수c의 오른쪽부터 c가 아닐 때까지 set에 지정된 문자를 제거한다.
만약 set이 지정되어 있지 않으면 공백을 제거한다.
9. SQL> select ename, rpad(sal,5,'*') from emp where rownum < 5;
ENAME RPAD(SAL,5
---------- ----------
SMITH 800**
ALLEN 1600*
WARD 1250*
JONES 2975*
SQL> select rtrim('JCLEEAAA','A') from dual;
RTRIM
-----
JCLEE
SQL기초강좌_문자함수
문자함수
10. -- set문자가 생략되면 공백(Blank)으로 간주한다. 주로 rtrim을 사용시 set문자를 사
용하지 않고 아래의 경우처럼 공백을 제거하기 위해서도 많이 사용한다.
SQL> select rtrim('JCLEEAAA ') from dual;
RTRIM('J
--------
JCLEEAAA
SQL기초강좌_문자함수
문자함수
11. SQL> select substr('I LOVE KOREA', 3, 4) from dual;
SUBS
----
LOVE
SQL> select substr('I LOVE KOREA', 3) from dual;
SUBSTR('IL
----------
LOVE KOREA
SQL기초강좌_문자함수
문자함수
SUBSTR(c, m [,n]) : 인수 c의 m번째부터 n개 문자를 잘라낸다. n이 생략되면 c의 끝까
지를 잘라낸다.
SUBSTRB(c, m [,n]) : 인수 c의 m번째부터 n개 문자를 잘라낸다. n이 생략되면 c의 끝까
지를 잘라낸다.(byte단위 처리)
12. -- 아래 예문은 우측에서부터 10번째 자리에서부터 문자4개를 추출한다는 의미임
SQL> select substr('I LOVE KOREA', -10, 4) from dual;
SUBS
----
LOVE
SQL기초강좌_문자함수
문자함수
13. -- 다음 예문들은 substr과 substrb의 차이를 알 수 있는 예문이다. 두 번째 예문은 한
글을 2바이트로 간주 하기(바이트 단위로 처리) 때문에 ‘안’이라는 결과가 나타나는 것
이다.
SQL> select substr('안녕JCLEE', 1, 2) from dual;
SUBS
----
안녕
SQL> select substrb('안녕JCLEE',1, 2) from dual;
SU
--
안
SQL기초강좌_문자함수
문자함수
14. SQL> select translate('ABCDE','ABCDEFG','0123456') from dual;
TRANS
-----
01234
SQL> select upper('oraclejava') from dual;
UPPER('ORA
----------
ORACLEJAVA
SQL기초강좌_문자함수
문자함수
TRANSLATE(c, from, to) : 인수 c의 문자열에서 from에 해당 하는 것 들을 to에 해당하
는 것으로 바꾼다.
UPPER(c) : 인수 c의 문자열을 대문자로 바꾼다.