SQL기초강좌
문자함수 (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기초강좌_문자함수
문자함수
-- 뒤에서부터 검색을 하며, 뒤에서부터 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의 길이를 돌려준다. (바이트 단위)
SQL> select length('안녕TATATA') from dual;
LENGTH('안녕TATATA')
--------------------
8
-- 아래는 lengthb 함수의 예이다, 한글이 한글자로 간주해 1을 리턴하는 length와 한
글의 바이트수를 되돌리는 lengthb의 차이이다.
SQL> select lengthb('안녕TATATA') from dual;
LENGTHB('안녕TATATA')
---------------------
10
SQL기초강좌_문자함수
문자함수
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을 생략하여 좌측 공백을
제거하는 용도로 많이 사용된다.
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기초강좌_문자함수
문자함수
-- set문자가 생략되면 공백(Blank)으로 간주한다.
SQL> select ltrim(' OracleJava') from dual;
LTRIM('ORA
----------
OracleJava
SQL기초강좌_문자함수
문자함수
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이 지정되어 있지 않으면 공백을 제거한다.
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기초강좌_문자함수
문자함수
-- set문자가 생략되면 공백(Blank)으로 간주한다. 주로 rtrim을 사용시 set문자를 사
용하지 않고 아래의 경우처럼 공백을 제거하기 위해서도 많이 사용한다.
SQL> select rtrim('JCLEEAAA ') from dual;
RTRIM('J
--------
JCLEEAAA
SQL기초강좌_문자함수
문자함수
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단위 처리)
-- 아래 예문은 우측에서부터 10번째 자리에서부터 문자4개를 추출한다는 의미임
SQL> select substr('I LOVE KOREA', -10, 4) from dual;
SUBS
----
LOVE
SQL기초강좌_문자함수
문자함수
-- 다음 예문들은 substr과 substrb의 차이를 알 수 있는 예문이다. 두 번째 예문은 한
글을 2바이트로 간주 하기(바이트 단위로 처리) 때문에 ‘안’이라는 결과가 나타나는 것
이다.
SQL> select substr('안녕JCLEE', 1, 2) from dual;
SUBS
----
안녕
SQL> select substrb('안녕JCLEE',1, 2) from dual;
SU
--
안
SQL기초강좌_문자함수
문자함수
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의 문자열을 대문자로 바꾼다.

문자함수(2)

  • 1.
  • 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기초강좌_문자함수 문자함수
  • 7.
    -- set문자가 생략되면공백(Blank)으로 간주한다. SQL> select ltrim(' OracleJava') from dual; LTRIM('ORA ---------- 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('ILOVE 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의 문자열을 대문자로 바꾼다.